关于hibernate一个事务管理问题!

bxfyb 2008-10-04 10:42:23
做一个项目里,有两个方法分别将两组数据按顺序写入数据库
这是时候问题就出来了!为了保证两组数据能够在一次操作中都写入,或者一个方法出错时候,另一个方法也不写入,所以我将这个两个方法,又放到另一个方法里。
这样在一个事务管理里,可以保证两个操作同时插入或者一组出错另一个也放弃操作。但是由此产生了一个问题。
因为在一个是事务里,所以第二个方法实际上是执行了更新操作。
请教大家有什么解决方法。用session.flush不好使
...全文
125 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyi123 2008-10-06
  • 打赏
  • 举报
回复
学习,帮顶
wNvShine 2008-10-06
  • 打赏
  • 举报
回复
不懂..
西瓜 2008-10-05
  • 打赏
  • 举报
回复
SSH用的还不熟练
没有发言权
帮顶
無名VF 2008-10-04
  • 打赏
  • 举报
回复
UP
bxfyb 2008-10-04
  • 打赏
  • 举报
回复
public void addRoughInto(OperRecord operRc, int partsId, int operId,
int secId) {

this.addRough(operRc, partsId, operId, secId);
Stats stats = this.listStats(partsId, secId, operRc.getNumber());
this.addMoPiRk(stats, operRc.getNumber());
this.getSession().flush();
this.getSession().clear();

this.addPartsInfo(operRc, secId, partsId, Permission.PRO_IN);
}
蓝色的执行一个插入操作
红色执行另一个插入操作
这两个操作必须成对出现,不能一个成功一个失败
这里我用了session.clear
目前是解决问题了,两个操作都插入两行数据,但是不知道这个有没有什么“副作用”
bxfyb 2008-10-04
  • 打赏
  • 举报
回复
暂时是解决了,session.flush后,我又用了session.clear
ELement_DG 2008-10-04
  • 打赏
  • 举报
回复
关注中!!!!
meadking 2008-10-04
  • 打赏
  • 举报
回复
用session.flush是不行的,如果配置了connection.autocommit=true
执行session.flush会马上执行sql!

不知道你的问题是什么?
因为在一个是事务里,所以第二个方法实际上是执行了更新操作。
.merge(detachedInstance);方法;可以保存游离实体
saveOrUpdate(instance)方法;
看你调用哪个了!
TYLEO 2008-10-04
  • 打赏
  • 举报
回复
能不能把代码贴出来看看
我也没有看懂,呵呵
zhongzhifeng_2008 2008-10-04
  • 打赏
  • 举报
回复
什么意思,没看明白。。。。。。。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧