所以在我的数据库中,我有 3 行,两行的 defaultFlag 为 0,其中一个设置为 1,现在在我的处理中,我正在将一个对象的 defaultProperty 从 0 更新为 1,但还没有保存这个对象。
在保存之前,我需要查询数据库并查找是否有任何行设置了 defaultFlag,只有 1 个默认设置。
所以在更新之前运行查询以查找是否设置了默认值并且我得到了 2 个值,请注意,如果我去检查数据库,那么只有 1 行具有默认设置,但查询给了我两个结果,因为 this.object 默认属性已从 0 更改为 1,但请注意此对象尚未保存在数据库中。
我真的很困惑,为什么当数据库中有一行设置了默认值,而其他对象的默认属性已更改但未保存时,为什么休眠查询返回 2。
任何想法都会有所帮助。如果需要,我可以提供查询。
更新
根据建议,我在运行查询之前添加了 session.clear() 。
session.clear();
String sql = "SELECT * FROM BANKACCOUNTS WHERE PARTYID = :partyId AND CURRENCYID = :currencySymbol AND ISDEFAULTBANKACCOUNT= :defaultbankAccount";
SQLQuery q = session.createSQLQuery(sql);
q.addEntity(BankAccount.class);
q.setParameter("partyId", partyId);
q.setParameter("currencySymbol", currencySymbol);
q.setParameter("defaultbankAccount", 1);
return q.uniqueResult();
它按预期返回结果中的 1 行,但现在我得到了
嵌套异常是 org.hibernate.NonUniqueObjectException:具有相同标识符值的不同对象已与会话异常相关联