如何解决无法在 micronaut cli-app 中的多线程中获取当前线程的事务同步会话
环境:
- 操作系统:Windows 10
- JDK 版本:11.0.7
- Micronaut 版本:2.5.7
- 数据库:Oracle R12(我猜)
- 项目:https://github.com/wureka/cli-multithread-jpa
我的项目使用 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 举报,一经查实,本站将立刻删除。