无法在 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 (将#修改为@)