问题描述
环境:
- 操作系统: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 (将#修改为@)