在选择查询中获得了一个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) [hibernate.jar文件:3.6.10.Final]
查询是一个简单的选择查询,涉及多个实体和where子句,如
从table1 a,table2 b,table3中选择不同的a.id,b.type .... c ...其中b.id = a和c.id in ...
众所周知,当我们尝试更新脏实体时会发生OptimisticLockException,但是select查询如何导致此异常。是否存在任何可能性或者这是一个错误?
答案 0 :(得分:2)
最有可能的选择查询不是异常的来源,而只是触发器。 通常,Hibernate将在相关选择之前触发刷新,因此如果您进行更新导致OptimisticLockException,则在刷新更新时将抛出异常。
在执行select查询之前尝试手动刷新,你应该在那里看到异常(你可能必须将刷新模式设置为MANUAL)。