複数のユーザーがいます。同時実行を防ぐために、次のように書きます。
@EJB
PersistenceManagerRemote persistenceManager;
persistenceManager.lock(decidableEntity, LockModeType.READ);
persistenceManager.refresh(decidableEntity);
これは私のために働いた。ただし、何かを永続化してから、同じトランザクションでこのコードを呼び出すと、エラーが発生します。
javax.persistence.PersistenceException: org.hibernate.HibernateException: this instance does not yet exist as a row in the database
エンティティを永続化すると、トランザクションが完了するまでデータベース コンテキストは影響を受けません。そのため、更新すると、データベースでエンティティを見つけようとするため、エラーが発生します。解決策はありますか?2回に分けてのお取引はできません。並行性も考慮する必要があります。私に何ができる?