我在设置对象的锁定模式时遇到了问题。
以下是代码:
MyObject a = myQuery.getSingleResult();
logger.info(entityManager.getLockMode(a));
entityManager.lock(a, LockModeType.OPTIMISTIC_FORCE_INCREMENT);
logger.info(entityManager.getLockMode(a));
结果是:
OPTIMISTIC
OPTIMISTIC
我的对象A包含一个对象列表B.我想在修改B时增加A,这就是我使用强制增量功能的原因。
但显然它根本不起作用。有些帮忙吗?
答案 0 :(得分:2)
所以经过大量的搜索,我使用的是Hibernate 3.6.10.Final版本,它有这个极好的bug: https://hibernate.atlassian.net/browse/HHH-5222
从READ升级到OPTIMISTIC_FORCE_INCREMENT失败
修复版本:4.0.0.CR7
简而言之,默认情况下,锁定设置为READ,其优先级高于OPTIMISTIC或OPTIMISTIC_FORCE_INCREMENT,因此您无法更改它。
所以我升级到4.2.0.Final,一切顺利