0

EJB3 Persistence NamedQuery で LockMode を指定するにはどうすればよいですか? Pessimistic LockMode を既存の select に追加して、必要に応じて更新できるようにしたいのですが、驚くべきことに Query オブジェクトには setLockMode(xxx) メソッドがありません (私の理解では、EJB3 永続性のサブセットである JPA が setLockMode を公開し、EJB3 永続性がメソッドを使用可能にする必要があります)。それも)。

Query query = em.createNamedQuery("findOptoutStudent");
query.setParameter("optoutIndicator", optoutIndicator);
List<Student> students = query.getResultList();
return students.get(0);

クエリを手動で「更新用に選択」に変更する必要はないと思います。

ありがとうケビン

4

1 に答える 1

0

悲観的ロック モード :

  • PESSIMISTIC_READこれは共有ロックを表します。別のエンティティ マネージャが を取得すると、ロック リクエストは失敗しPESSIMISTIC_WRITEます。

  • PESSIMISTIC_WRITEこれは排他ロックを表します。別のエンティティ マネージャがオブジェクトのいずれかのロックを取得した場合、ロック要求は失敗します。

オブジェクトにロックを適用する

entityManager.lock(object, LockModeType.PESSIMISTIC_READ)

後でロックを解除する

entityManager.lock(object, LockModeType.NONE)
于 2011-11-10T17:02:13.390 に答える