我是使用“乐观锁定”机制的新手——我正在使用休眠(在 Jboss 中)和容器管理事务(CMT)。我想在我的实体读取和实体更新之间其他人更新数据库中的同一实体(即行)时处理这种情况。在这种情况下,我想抛出异常..
我已经用 @Version 注释了我的实体 - 比如
@Version
private Long version;
现在,我很困惑这是否足以进行版本管理,或者我需要像这样显式调用 EntityManager.lock() api
{
.
.
final QueryDTO queryDTO = entityManager.find(QueryDTO.class, id);
entityManager.lock(queryDTO, LockModeType.READ);
queryDTO.setStatus(updatedStatus);
entityManager.persist(queryDTO);
}
提前致谢,