私の目標は、レコードをデータベースに挿入してから、新しいトランザクションで更新することです。
私はこのように試します:
@PersistenceContext(unitName="Table")
private EntityManager manager;
@EJB
private ITransactionTest itt;
public void insertRecord(int i) throws RuntimeException{
Record record = new Record();
record.setId(i+"");
record.status(1);
manager.persist(record);
manager.flush();
itt.updateRecord(i);
}
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
public void updateRecord(int i) throws RuntimeException{
Record record = manager.find(Record.class, i+"");
record.setStatus(2);
manager.flush();
}
しかし、うまくいきません。getReference()
また、レコードを取得するために使用しようとすると、エンティティが見つからないという例外がスローされます。エンティティが永続コンテキストに存在しなくなったようです。
の注釈を削除するREQUIRES_NEW
と機能し、レコードを正常に更新できます。
では、新しいトランザクションでレコードを更新するにはどうすればよいでしょうか? トランザクションをまたぐ永続コンテキストでエンティティを管理状態に保つにはどうすればよいですか?
JPAを使用して更新SQLクエリを実行すると、私の目標を達成できるようです。しかし、他の方法はありますか?
よろしくお願いします、
カジェラス