Hibernate,据我所知,一旦会话值中的附加对象发生更改,就会更新数据库。有没有办法从数据库中获取新副本并重新附加丢弃更改对象的新副本?
下面是我使用Hibernate查询数据库获得的对象。
Rtpmast rtpmast = (Rtpmast) iterator.next();
执行以下代码后
rtp.setRptval1(promotionMethod.getType());
Hibernate注册对象已更改。当我稍后提交事务或查询数据库时,会话被刷新了吗?
我想要的是暂时更新Rtpmast object
并稍后丢弃更改的对象。
答案 0 :(得分:5)
Hibernate,据我所知,一旦附加的对象更新了数据库 在会话的价值变化。
实际上,只有在调用session.save(...)
,session.delete(...)
等方法后,Hibernate才会更新数据库。如果您正在进行交易,则还需要进行commit
次更改。
你想要的是使用evict()
并重新查询对象,如你所提到的,或者分离你正在处理的实例,这意味着你需要close()
Session
1}}(如提到here所述,还有其他一些不那么琐碎的方法。)