读书人

初学者hibernate编程式事务不能回滚

发布时间: 2012-04-05 12:42:39 作者: rapoo

菜鸟求教:hibernate编程式事务不能回滚;
junit test:

Java code
      public void test(){        User user=new User();        user.setUserName("lisi");        UserManager userManager=new UserManagerImpl();        userManager.addUser(user);    }

UserManagerImpl
Java code
public class UserManagerImpl implements UserManager{    private LogManager logManager=new LogManagerImpl();    public void addUser(User user) {       Session session=null;       Transaction tx=null;       try {        session = HibernateSessionFactory.getSessionFactory()                .getCurrentSession();        tx=session.beginTransaction();        session.save(user);        Log log = new Log();        log.setType("anquanrizi");        Integer.parseInt("asdfasf");        log.setCont("XXX jinru xitong");        logManager.addLog(log);                tx.commit();    } catch (RuntimeException e) {        tx.rollback();    }    }            public void setLogManager(LogManager logManager) {        this.logManager = logManager;    }    }

LogManagerImpl
Java code
package com.log.manager;import org.hibernate.Session;import com.HibernateSessionFactory;import com.log.entity.Log;public class LogManagerImpl implements LogManager{    public void addLog(Log log) {        Session session=null;        session = HibernateSessionFactory.getSessionFactory()                    .getCurrentSession();        session.save(log);            }}



[解决办法]
默认commit是提交的需要手动把它设置:
Connection conn= new Connection();
conn.setAutoCommit(false)
[解决办法]
那可能存在缓存!你可以讲缓存清理
!吧myeclipse中的缓存清理一下在试试
[解决办法]
探讨
默认commit是提交的需要手动把它设置:
Connection conn= new Connection();
conn.setAutoCommit(false)

[解决办法]
session = HibernateSessionFactory.getSessionFactory().getCurrentSession();
改为
session = HibernateSessionFactory.getSessionFactory().openSession();
试试

读书人网 >J2EE开发

热点推荐