spring hibernate transaction无法提交

时间:2013-05-10 07:11:17

标签: spring hibernate spring-mvc transactions

我在春天写过dao,因为我曾经在struts中写过一些像这样的想法

@Autowired
    private SessionFactory sessionFactory;
    Session session=null;
    Transaction tx=null;
   List<Login> users= null;
    try{
        session=sessionFactory.getCurrentSession();
        tx=session.beginTransaction();
        users=session.createQuery("from Login").list();
        tx.commit();
    }catch(Exception e){System.out.println("commit exception:"+e);
        try {tx.rollback();} catch (Exception ex) {System.out.println("rollback exception:"+ex);} 
    }finally{if(session!=null && session.isOpen()){session.close();}}

但我收到错误:

  

抛出异常[请求处理失败;嵌套异常是   org.springframework.transaction.TransactionSystemException:无法   提交Hibernate事务;嵌套异常是   org.hibernate.TransactionException:事务未成功   以root原因org.hibernate.TransactionException:   交易未成功启动

有人可以帮帮我。

如果我这样写,

try{
            users=sessionFactory.getCurrentSession().createQuery("from Login").list();
        }catch(Exception e){System.out.println("commit exception:"+e);

工作正常,但是安全吗?

谢谢和问候

1 个答案:

答案 0 :(得分:3)

您正在使用@Transactional,为您启动Spring启动,提交和回滚事务,并以声明方式处理您的事务。这一点的关键在于不必在代码中启动,提交和回滚事务。所以方法实现应该只是

return (List<Login>) sessionFactory.getCurrentSession().createQuery("from Login").list();