从注射的数据源中获取连接,并在micronaut数据中使用多个数据源抛出异常

发布于 2025-01-26 15:15:32 字数 1513 浏览 5 评论 0原文

无法从春季和文档(配置多个数据源)中写入的数据源连接, https://micronaut-projects.github.io/micronaut-sql/micronaut-sql/latest/latest/guide/guide/guide/ude/guide/ugid-#: tex-: text:text =配置%20multiple%20DATA%20源投掷

Suppressed: io.micronaut.transaction.exceptions.NoTransactionException: No current transaction present. Consider declaring @Transactional on the surrounding method
        at io.micronaut.transaction.jdbc.TransactionalConnectionInterceptor.intercept(TransactionalConnectionInterceptor.java:65)
        at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:137)
        at io.micronaut.transaction.jdbc.TransactionalConnection$Intercepted.close(Unknown Source)
        at com.demo.service.DemoService.processRecords(DemoService.java:116)
        ... 11 common frames omitted
    Caused by: io.micronaut.transaction.jdbc.exceptions.CannotGetJdbcConnectionException: No current JDBC Connection found. Consider wrapping this call in transactional boundaries.
        at io.micronaut.transaction.jdbc.DataSourceUtils.doGetConnection(DataSourceUtils.java:135)
        at io.micronaut.transaction.jdbc.DataSourceUtils.getConnection(DataSourceUtils.java:93)
        at io.micronaut.transaction.jdbc.TransactionalConnectionInterceptor.intercept(TransactionalConnectionInterceptor.java:63)
        ... 14 common frames omitted

Couldn't get connection from injected DataSource like spring and as written in documentation(Configuring Multiple Data Sources) https://micronaut-projects.github.io/micronaut-sql/latest/guide/#:~:text=Configuring%20Multiple%20Data%20Sources throws

Suppressed: io.micronaut.transaction.exceptions.NoTransactionException: No current transaction present. Consider declaring @Transactional on the surrounding method
        at io.micronaut.transaction.jdbc.TransactionalConnectionInterceptor.intercept(TransactionalConnectionInterceptor.java:65)
        at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:137)
        at io.micronaut.transaction.jdbc.TransactionalConnection$Intercepted.close(Unknown Source)
        at com.demo.service.DemoService.processRecords(DemoService.java:116)
        ... 11 common frames omitted
    Caused by: io.micronaut.transaction.jdbc.exceptions.CannotGetJdbcConnectionException: No current JDBC Connection found. Consider wrapping this call in transactional boundaries.
        at io.micronaut.transaction.jdbc.DataSourceUtils.doGetConnection(DataSourceUtils.java:135)
        at io.micronaut.transaction.jdbc.DataSourceUtils.getConnection(DataSourceUtils.java:93)
        at io.micronaut.transaction.jdbc.TransactionalConnectionInterceptor.intercept(TransactionalConnectionInterceptor.java:63)
        ... 14 common frames omitted

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

自在安然 2025-02-02 15:15:32

我通过解开注入数据源():

DataSource db1Ds = ((DelegatingDataSource) db1DataSource).getTargetDataSource();
Connection db1Conn = db1Ds.getConnection();
/* or
Connection db1Conn = ((DelegatingDataSource) db1DataSource).getConnection();
*/

我不知道是否有简短的解决方案。

I solved my problem by unwrapping injected DataSource (more):

DataSource db1Ds = ((DelegatingDataSource) db1DataSource).getTargetDataSource();
Connection db1Conn = db1Ds.getConnection();
/* or
Connection db1Conn = ((DelegatingDataSource) db1DataSource).getConnection();
*/

I don't know that there is short solution or not.

孤君无依 2025-02-02 15:15:32

另外(如果可能的话)您只需在该方法上添加@transactional注释,如例外建议

Alternatively (if it's possible) you can just add @Transactional annotation on the method, as exception suggests

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文