我自己写了个事务 但是 为什么主表保存成功 从表失败了 但是 为什么事务不会滚啊 配置文件 也没问题 ???急急急

xchen1986 2010-01-20 09:49:31
下面是代码
Session session = this.getSessionFactory().openSession();
session.connection().setAutoCommit(false);
Transaction tx = session.beginTransaction();
Date date = new Date();
catalogApply.setApplyTime(date);
catalogApply.setOrgNo(propCode.getHospitalCode());
catalogApply.setOrgName(propCode.getHospitalName());
catalogApply.setApplyNo(StringUtil.getOrderCode("3"));
debug.debugObject(catalogApply.getCatalogApplyItems());
try {

for (int i = 0; i < catalogApply.getCatalogApplyItems()
.size(); i++) {
CatalogApplyItem item = (CatalogApplyItem) catalogApply
.getCatalogApplyItems().toArray()[i];
if (item.getCatalogNo().equals("")) {
// item.setCatalogId(Long.valueOf(null));
}
item.setItemId(null);
item.setTimeStamp(date);
item.setCatalogApply(catalogApply);
// commonDao.save(item);
}
commonDao.save(catalogApply);
tx.commit();
session.close();
return "1";
} catch (Exception e) {
// TODO: handle exception
exceptionLoger.saveLogInfo(e);
tx.rollback();
session.close();
return "0";
...全文
148 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
xchen1986 2010-01-21
我用session。save()是可以保存数据 如果子表失败的话 就是都回滚了
如果换回commonDao.save() 又不能回滚事务 所以 确实是开启了不同的session 所导致的问题
回复
Johnson_Hong 2010-01-21
你新打开了一个session,然后开启事务。

但是dao里的session与这个session不是同一个

把你的dao怎么获取session的代码贴出来,应该就是这个原因
回复
spring_cj 2010-01-21
catch (Exception e)确定捕获到错误了吗?
回复
zm_hs 2010-01-21
用了事务不会回滚,你是不是用的同一个session哦
回复
蛋黄车 2010-01-21
Hibernate里用DAO层的方法经常出现这样的问题。Hibernate中的事务提交默认是手动提交。

可以尝试不用DAO层,而是在service里面自己写方法。设置事务提交的时机

如果非用DAO层的话,可以在DAO层里面自己写这种较复杂的逻辑方法。在service中直接调用一下就OK了。

我也遇到过LZ这种问题,最后是自己写的方法,而不是在service中调用DAO层中默认的方法。
回复
xchen1986 2010-01-20
在控制台里 有个保存子表的语句
hbm文件 里写了个这个
<set name="catalogApplyItems" inverse="true" lazy="false" cascade="save-update">
<key>
<column name="APPLY_ID" precision="18" scale="0" not-null="true" />
</key>
<one-to-many class="com.sino.module.dmc.catalogApply.entity.CatalogApplyItem" />
</set>
回复
道光2008 2010-01-20
映射文件建立级联关系没有啊,

看看控制台上打印的sql有无保存子表的操作
回复
相关推荐
发帖
Java EE
创建于2007-09-28

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
申请成为版主
帖子事件
创建了帖子
2010-01-20 09:49
社区公告
暂无公告