日期:2014-05-20  浏览次数:20753 次

Hibernate读取数据不一致
使用Struts1.2+Hibernate3.2 开发,修改某条记录,数据库已修改成功,但用Criteria 查询出来里有时是修改前的有时是修改后的,在网上看到有这样的回复,有些说是Transaction事务需要commit,使 flush,close,evict等还是不行,请各位帮一下忙,谢谢

------解决方案--------------------
public void save(WmsBaseCustomer transientInstance) {
log.debug("saving WmsBaseCustomer instance");
//开启事务
Session session=this.getSession();
Transaction trans=session.beginTransaction();
trans.begin();
try {
getSession().save(transientInstance);
//保存成功提交事务
trans.commit();
log.debug("save successful");
} catch (RuntimeException re) {
log.error("save failed", re);
//保存失败回滚事务
trans.rollback();
throw re;
}finally{
session.clear();
//防止出现以下错误
//a different object with the same identifier value was already associated with the session
}
}

在www.verycd.com中找个hibernate视频看看
------解决方案--------------------
跟新操作使用事务这是hibernate最基本的,
肯定需要提交呀。
Session session=工具类.getSession(); 
Transaction trans=null;

try {
trans=session.beginTransaction();
session.更新操作
trans.commit(); 

}catch (Exception re) { 
trans.rollback(); 
输出异常
}finally{ 
session.clear(); 

这是一个基本的轮廓

------解决方案--------------------
这个问题你需要去了解hibernate中的脏数据,不可重复读的问题。而且hibernate在其进行操作是有顺序的。
如果你每个对应一个事务的话,代码就有点复杂了。这些问题建议lz自己去学会,看了书就都明白了
------解决方案--------------------
hibernate延迟的问题吧