源码:
public Long save(Person entity) {
// TODO Auto-generated method stub
Transaction tr=getSession().getTransaction();
tr.begin();
Long i=(Long)getSession().save(entity);
getSession().flush();
tr.commit();
return i;
}
更改为:
public Long save(Person entity) {
// TODO Auto-generated method stub
Session session=getSession();
Transaction tr=session.getTransaction();
tr.begin();
Long i=(Long)session.save(entity);
session.flush();
tr.commit();
return i;
}
解释:
openSession每次调用都会新建一个session.所以源码中保存save和事务提交用的不是一个session,提交不对保存起作用。
本文介绍了一个关于Hibernate中实体保存操作的改进案例。原先的方法中,保存操作与事务提交使用了不同的Session实例,导致事务提交无法影响之前的保存操作。通过调整代码确保两者使用同一个Session,从而实现了正确的事务管理。
1306

被折叠的 条评论
为什么被折叠?



