微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在 micronaut cli-app 中的多线程中获取当前线程的事务同步会话

如何解决无法在 micronaut cli-app 中的多线程中获取当前线程的事务同步会话

环境:

我的项目使用 Micronaut Cli-App 构建并在多线程中运行。因为我的 sql 是通过编程方式构建的,所以我需要 EntityManager 对象来执行本机 sql

线程TestRunner运行时,entityManager启动后,出现如下错误

08:43:13.514 [main] INFO  DefaultEnvironment - Established active environments: [cli]
08:43:14.107 [main] INFO  HikariDataSource - HikariPool-1 - Starting...
08:43:15.887 [main] INFO  HikariDataSource - HikariPool-1 - Start completed.
08:43:15.893 [main] INFO  Version - HHH000412: Hibernate ORM core version 5.4.24.Final
08:43:16.009 [main] INFO  Version - HCANN000001: Hibernate Commons Annotations {5.1.2.Final}
08:43:16.116 [main] INFO  Dialect - HHH000400: Using dialect: org.hibernate.dialect.Oracle12cDialect
08:43:17.231 [Thread-1] INFO  TestRunner - Thread-1: starts ..........
Exception in thread "Thread-1" org.hibernate.HibernateException: Could not obtain transaction-synchronized Session for current thread
    at io.micronaut.transaction.hibernate5.MicronautSessionContext.currentSession(MicronautSessionContext.java:100)
    at org.hibernate.internal.SessionFactoryImpl.getCurrentSession(SessionFactoryImpl.java:479)
    at io.micronaut.configuration.hibernate.jpa.TransactionalSessionInterceptor.intercept(TransactionalSessionInterceptor.java:56)
    at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:96)
    at io.micronaut.configuration.hibernate.jpa.TransactionalSession$Intercepted.getTransaction(UnkNown Source)
    at com.example.repository.AbstractProcessExcpRepository.deleteProcessExcpsInOnestmt1(AbstractProcessExcpRepository.java:59)
    at com.example.runner.TestRunner.run(TestRunner.java:27)
    at java.base/java.lang.Thread.run(Thread.java:834)
08:43:18.239 [main] INFO  MainController - 1. Wait test result

但是如果我在主线程中运行 AbstractProcessExcpRepository ,那就没问题了。那么,你能告诉我如何让 CrudRepository 在多线程中工作吗?

谢谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。