首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

a different object with the same identifier value was already associated with th

2011-12-26 
Hibernate读取数据不一致使用Struts1.2+Hibernate3.2 开发,修改某条记录,数据库已修改成功,但用Criteria

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延迟的问题吧

热点排行