Hibernate:获取脏实体的持久状态

时间:2012-04-26 19:36:41

标签: java hibernate

采用以下代码:

MyEntity e = dao.getEntity(1);
e.setProp1(someVal);
e.setProp2(otherVal);

MyEntity eOld = dao.getEntity(1);

如果我这样做,那么e将会更新(因为Hibernate检测到它是脏的)并且eOld将具有相同的属性值(prop1,prop2)a e。有没有办法获得这个脏实体的持久状态(就像在数据库中一样)?

2 个答案:

答案 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到会话。 它似乎在任何情况下都有效。