Java 如何在Query.list()上防止StaleObjectStateException?

Java 如何在Query.list()上防止StaleObjectStateException?,java,hibernate,optimistic-locking,Java,Hibernate,Optimistic Locking,我在软件中使用Hibernate乐观锁(通过@Version注释)。它工作得很好,但有时我在尝试仅从数据库检索某些对象时会遇到StaleObjectStateException。如何防止Hibernate抛出这些异常?我猜您在会话中更改了一些对象。然后执行一个查询,刷新会话。由于对象已被其他人更改,因此会出现异常 解决方案:困难。在执行查询之前,您可以循环检查会话的内容,并打印出所有脏的内容,以便找到引起问题的对象。是否同时修改实体?若有,那个就尽量避免这种情况。@Scorpion-我试图从数据

我在软件中使用Hibernate乐观锁(通过@Version注释)。它工作得很好,但有时我在尝试仅从数据库检索某些对象时会遇到StaleObjectStateException。如何防止Hibernate抛出这些异常?

我猜您在会话中更改了一些对象。然后执行一个查询,刷新会话。由于对象已被其他人更改,因此会出现异常


解决方案:困难。在执行查询之前,您可以循环检查会话的内容,并打印出所有脏的内容,以便找到引起问题的对象。

是否同时修改实体?若有,那个就尽量避免这种情况。@Scorpion-我试图从数据库中获取对象而不做任何更改。我发现了导致异常的实体。如何将其从会话中删除?会话中有相应的方法,但这很可能不是解决方案。问题是:为什么它存在并被修改,而不是刷新和提交?从会话中删除实体的方法是逐出。