0

我们如何在 EJB3 Persistence NamedQuery 中指定 LockMode?我想将悲观锁定模式添加到我现有的选择中,以便我可以在必要时进行更新,但令人惊讶的是查询对象没有 setLockMode(xxx) 方法(我的理解是如果 JPA,EJB3 持久性的子集,公开 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 回答