如果在第一个查询和第二个查询之间的不同会话内的并发更新中更改了该查询的结果数据,那么当您在一个tx内执行相同的查询两次时,是否可以使用Hibernate获取StaleObjectStateException
?Hibernate - StaleObjectStateException在查询中可能吗?
我在此场景中的所有实体上使用乐观并发控制。
所以它看起来像这样。
线程1:事务开始
线程1:查询被执行,并检索与键= 4711
线程2即顺序:用键4711相同的顺序被取出,改变和致力于在第二线程
螺纹-1:查询再次执行,并应返回键= 4711的订单
我会在第二个查询中的Thread-1中得到StaleObjectStateException
吗?
感谢您的帮助!
Thomas
感谢您的回答。与此同时,我写了一个测试,其中显示了你所描述的内容。 如果线程1在执行第二个查询之前以某种方式更改顺序,由于autoflush,我将得到StaleObjectException。 这实际发生在最近的一个项目中,起初似乎很奇怪,因为订单的变化是由于副作用。 – herrwieger 2010-03-19 16:39:42