采用以下代码:
MyEntity e = dao.getEntity(1);
e.setProp1(someVal);
e.setProp2(otherVal);
MyEntity eOld = dao.getEntity(1);
如果我这样做,那么e将会更新(因为Hibernate检测到它是脏的)并且eOld将具有相同的属性值(prop1,prop2)a e。有没有办法获得这个脏实体的持久状态(就像在数据库中一样)?
答案 0 :(得分:2)
尝试:
<property name="defaultAutoCommit" value="false" />
或替代使用detach
并在准备好后继续重新附加。
dao.detach(e);
...
e.setProp1("AnotherVal"); //not propatated to the database
dao.merge(cat); // update
答案 1 :(得分:0)
其实我自己可能已经找到了解决方案......
我已经尝试过驱逐eOld,但是这没有做到,因为我需要在检索eOld之前逐出e并在比较之后(用于审计)再次重新连接(合并)e到会话。 它似乎在任何情况下都有效。