2012-04-24 76 views
1

Hibernate,正如我所知,一旦连接的对象在会话的值发生变化时就更新数据库。有没有办法从数据库中获取全新副本并重新安装丢弃更改对象的新副本?刷新数据库中Session对象的对象Hibernate

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

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

一旦执行下面的代码

rtp.setRptval1(promotionMethod.getType()); 

休眠寄存器,该对象已经改变。当我稍后提交事务或查询数据库时会话被刷新?

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

+0

我发现铅 - 休眠evict()方法 – Chan 2012-04-24 06:32:21

回答

5

休眠,因为我知道更新数据库一旦附加对象 在会话的价值改变。

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

你需要的是既可以使用evict()并重新查询对象,如你所提到的,或者断开你的工作实例,这意味着你需要close()Session(还有其他的,没有价值的,方法如上所述here)。

+0

哦谢谢...我需要关闭()会话来分离对象吗? – Chan 2012-04-24 07:44:04

+0

这是典型的方法之一。 – yair 2012-04-24 09:07:31