没有活动事务,createCriteria无效

时间:2015-01-07 13:56:31

标签: java spring hibernate

我正在使用Spring 4.1.3.RELEASEHibernate 4.3.7

当我尝试使用JTA事务和Hibernate条件查询时,出现了以下问题。代码:

@Resource
private UserTransaction userTransaction;

@Resource
private SessionFactory sessionFactory;

public User getUserById(Integer id){
    try {
        userTransaction.begin();
    } catch (Exception e) { }
    Criteria criteria = sessionFactory.getCurrentSession().createCriteria(User.class);
    criteria.add(Restrictions.eq("id", id));
    try {
        userTransaction.commit();
    } catch (Exception e) { }
    return (User) criteria.uniqueResult();
}

我得到了一个异常,即没有活动事务,createCriteria无效。通过使用调试器遍历方法的代码,我确保我有一个有效的JTA - 事务。出了什么问题?

2 个答案:

答案 0 :(得分:1)

一旦你是春天为什么你不想用spring管理你的交易?看看链接: Configuring Spring and JTA without full Java EE

答案 1 :(得分:1)

您可能在userTransaction.begin()上遇到异常。你的catch什么也没做,所以createCriteria()失败了,因为你没有事务。