0

采用以下代码:

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

MyEntity eOld = dao.getEntity(1);

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

4

2 回答 2

2

尝试:

<property name="defaultAutoCommit" value="false" />

或替代使用detach并在准备好坚持时重新连接。

dao.detach(e);
...
e.setProp1("AnotherVal"); //not propatated to the database
dao.merge(cat);  // update 
于 2012-04-26T19:39:30.850 回答
0

其实我自己可能已经找到了解决方案......

我已经尝试过驱逐 eOld 但这并没有这样做,因为我需要在检索 eOld 之前驱逐 e 并且在比较(用于审计)之后重新将 e 重新附加(合并)到会话。它似乎在任何情况下都有效。

于 2012-04-26T19:55:15.063 回答