关于乐观锁(Hibernate)的基本问题
我是新手使用“乐观锁定”机制 - 我使用的是hibernate(在Jboss中)和容器管理事务(CMT)。
我想在我的实体读取和实体更新之间处理这种情况,其他人更新DB中的同一实体(即行)。
在这种情况下,我想抛出异常..
我用@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);
}
提前致谢,
没有找到相关结果
已邀请:
1 个回复
枫湃揩乾纲
如果更新失败(某人/其他人改变了数据和版本),你将获得
(因为你使用的是EntityManager,我认为这是关于JPA的,在“原始”Hibernate中它可能就像StaleStateException) 。