线程问题内的JPA事务代理

问题描述

在我的Controller中,我注入了@Autowired这个Service,它实现了Runnable(我需要多线程),我这样称呼它:>

Thread t = new Thread(service);
t.start();
t.join();

然后,在我的Service的{​​{1}}中,我称其为run()(简单的Repository),它也与{{1 }}:

JPARepository

问题在于它不会使用Service保留实体。在第一个实体保存失败后,初始化事务代理(和Hibernate连接池)。之后,它可以正常工作。

有人可以指出我的正确方向吗?如何在持久化第一个实体之前强制线程初始化Hibernate事务代理

解决方法

您应该考虑在刷新Spring上下文之后启动线程。这样比较安全,因为您所有的bean都可能处于不一致状态。

@EventListener(ContextRefreshedEvent.class)
public void handleContextStart() {
   // ...
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...