在选择查询中出现 OptimisticLockException
javax.persistence.OptimisticLockException at org.hibernate.ejb.AbstractEntityManagerImpl.wrapStaleStateException(AbstractEntityManagerImpl.java:1415) [hibernate3.jar:3.6.10.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1336) [hibernate3.jar:3.6.10.Final] at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317) [hibernate3.jar:3.6.10.Final] at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:255) [hibernate3.jar:3.6.10.Final]
查询是一个简单的选择查询,涉及多个实体和where子句
select distinct a.id ,b.type ... from table1 a ,table2 b ,table3 c...where b.id=a and c.id in...
众所周知,当我们尝试更新一个脏实体时,会发生 OptimisticLockException,但是 select 查询怎么会导致这个异常。有没有可能,或者这是一个错误?
最佳答案
很可能选择查询不是异常的来源,而只是触发器。 通常,Hibernate 会在相关选择之前触发刷新,因此,如果您进行的更新导致 OptimisticLockException,则刷新更新时将引发异常。
在执行选择查询之前尝试手动刷新,您应该会看到异常(不过您可能必须将刷新模式设置为手动)。
关于java - 选择查询中的 OptimisticLockException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22196189/