次のように私はインターフェイスを持っている:バックエンドスレッドでJpaRepositoryを使用するにはどうすればよいですか?
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();
私はこのレポにうまく読み取っ行うことができるんだけど、私は保存し、フラッシュ時はいつでも、私は例外を取得:
をjavax.persistence.TransactionRequiredException: no transaction is in progress
これを正しく行う方法はありますか?
完璧、それは、ありがとう、ありがとう。 –