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

hibernate 更新不成功问题
如下:代码执行到了update语句,但是没有修改成功

Java code

sql = String.format("select * from %s where dg_id=%d and id=%d",sumo.getTableName(),sumo.getDgId(),sumo.getTraitId());
        Session session = sessionFactory.openSession();
        Transaction tx = null;
        try {
            //开启事物
            tx = session.beginTransaction();
            //获取修改的那条记录
            List<TraitStrTrees> list = session.createSQLQuery(sql).addEntity(TraitStrTrees.class).list();
            if(list.size()==0){
                return ;
            }
            TraitStrTrees tst = list.get(0);
            List<Integer> intList = SUUtil.parsingBinary(tst.getArticles());
            if(intList.size()==0){
                //说明数据有误,但也可以直接添加
            }else if(intList.size()==1){
                //直接修改
                tst.setTrait_value(sumo.getTraitItemValue());
                session.update(tst);
            }else{
                //删除后再修改,最后添加一条记录
            }
            
            //提交事物
            tx.commit();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            session.close();
        }



------解决方案--------------------
设断点有没有到tx.commit();
测试那个修改SQL语句是否正确;
------解决方案--------------------
tst.setTrait_value(sumo.getTraitItemValue());看下这个sumo.getTraitItemValue())有值没

------解决方案--------------------
对于PO对象的更新,无须再显示session.update(tst)。。。
------解决方案--------------------
如果走到了tx.commit();也不报异常
那就不知道什么错误了,打印下tst里面的属性值。看下你封装的对象