【发布时间】:2016-04-11 16:33:48
【问题描述】:
我有一个界面如下:
public interface PackageRepository extends JpaRepository<DocPackage, String> {
}
现在我可以通过以下方式从我的 REST 服务中毫无问题地使用它:
@Resource
PackageRepository repo;
我可以毫无问题地对其进行事务调用。
但是,当我尝试从工作线程加载它时:
public class MyWorker implements Runnable {
@Resource
PackageRepository repo;
@Transactional
private void doSomething() {
DocPackage pck = repo.findOne("key");
pck.setStatus(2);
repo.saveAndFlush(pck);
}
public void run() {
//stuff
doSomething();
//other stuff
}
}
new Thread(new MyWorker()).start();
我可以很好地读取这个 repo,但是每当我保存和刷新时,我都会遇到异常:
javax.persistence.TransactionRequiredException: no transaction is in progress
有什么方法可以正确完成这项工作吗?
【问题讨论】:
标签: java multithreading spring-data spring-data-jpa