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

Hibnerate:增加和修改的时候需要操作2个表,这样写对吗?
Java code

 public boolean update(Class a,Class b) {
        Session session = HibernateSessionFactory.getSession();
        Transaction tx = null;
        try {
            tx = session.beginTransaction();
            session.update(a);
            session.update(b);
            tx.commit();
            return true;
        } catch (RuntimeException re) {
            tx.rollback();
            log.error("==CardinfoServices update failed ==", re);
        } finally {
            session.close();
        }
        return false;
    }


增加也是类似

只要有一个表修改错误,那么事务就回滚


------解决方案--------------------
是如此,如果你觉得这2个操作必须在一个事务里面完成的话,这样子写没有问题,如果可以分开完成的话,最好分开到2个事务中去
------解决方案--------------------
这样添加是可以的。但是你更新数据时必须要保证Class的ID属性不能为空,你说有一个更新错误,那需要去检查下映射文件
有一个检查的方法:
在hibernat.cfg.xml文件是配置show_sql属性,这样在执行时会输出SQL语句。你检查下输出的SQL语句是否正确。也可把输出的SQL语句拿到数据库去执行一下。那样就知道UPDATE语句是否正确了。
希望有帮助。。。
------解决方案--------------------
可以,不过先实践先,报错再来贴出来,这样都不用花100分啦,呵呵
------解决方案--------------------
1楼说法不对比如说一张是日志表,另一张是业务表,所有业务修改都要有写日志表,这是不可能是。
必需是 一个事业有同时成功操作要不就都不操作的要求必需一个事务。

1 你可能看一下你有没有表的修改权限;先用一下find能不能查询出来;如果能说明是操作权限问题
2 可以用2楼方法。
3 上网查一下写一个log4j.xml把这些信息都 打出来这样更全面。
希望你能把异常贴出来
------解决方案--------------------
探讨
这样添加是可以的。但是你更新数据时必须要保证Class的ID属性不能为空,你说有一个更新错误,那需要去检查下映射文件
有一个检查的方法:
在hibernat.cfg.xml文件是配置show_sql属性,这样在执行时会输出SQL语句。你检查下输出的SQL语句是否正确。也可把输出的SQL语句拿到数据库去执行一下。那样就知道UPDATE语句是否正确了。
希望有帮助。。。

------解决方案--------------------
虽然没错,但业务逻辑应分开写