如何解决此异常?原因:org.hibernate.TransactionException:事务未成功启动

时间:2014-02-11 17:06:04

标签: java spring hibernate spring-mvc hibernate-mapping

我是hibernate的新手并尝试在数据库中保留一个简单的对象。数据将保存在表中,但随后抛出以下异常。 引起:org.hibernate.TransactionException:事务未成功启动

这是我的代码,请帮助!

    @Transactional
public void addEmployee(Employee empObj) {
    System.out.println(">>>>>>>>>>>in DAO");

    Transaction tx = null;
    Session session=sessionFactory.getCurrentSession();

    try{
    tx=session.beginTransaction();
    session.save(empObj);
    tx.commit();
    }

    catch (HibernateException e) {
         if (tx!=null)
             tx.rollback();
         e.printStackTrace(); 
      }

}

2 个答案:

答案 0 :(得分:0)

您所要做的就是更改方法代码,如下所示:

@Transactional
public void addEmployee(Employee empObj) {
    Session session=sessionFactory.getCurrentSession();
    session.save(empObj);
}

如果您确实已经使用Spring配置了Hibernate - 正如我猜测的那样,从异常开始 - 然后Hibernate Platform Transaction Manager拦截方法调用(由@Transactional隐含)并自动为您启动事务。由于每个会话已经打开了一个事务,因此无法打开一个新事务。

答案 1 :(得分:0)

这是因为你正在混合hibernate和spring事务。 @Transaction是弹簧AOP和剂量自动交易处理的一部分。你必须在代码中只使用一种事务类型,你可以删除任何一种。

相关问题