1

休眠,据我所知,一旦会话值中的附加对象发生更改,就会更新数据库。有没有办法从数据库中获取新副本并重新附加新副本以丢弃更改的对象?

下面是我从使用 Hibernate 查询数据库中获得的一个对象。

Rtpmast rtpmast = (Rtpmast) iterator.next();

一旦执行下面的代码

rtp.setRptval1(promotionMethod.getType());

Hibernate 注册该对象已更改。当我稍后提交事务或查询数据库时,会话是否被刷新?

我想要的是暂时更新Rtpmast object并稍后丢弃更改的对象。

4

1 回答 1

5

休眠,据我所知,一旦会话值中的附加对象发生更改,就会更新数据库。

实际上,Hibernate 仅在调用 等方法后才更新session.save(...)数据库session.delete(...)。如果您正在进行交易,您还必须进行commit更改。

您想要的是使用evict()并重新查询对象,正如您所提到的,或者分离您正在处理的实例,这意味着您需要(还有其他不那么琐碎的方法,如此close()所述)。Session

于 2012-04-24T06:42:41.510 回答