我正在使用Spring 4.1.3.RELEASE
和Hibernate 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
- 事务。出了什么问题?
答案 0 :(得分:1)
一旦你是春天为什么你不想用spring管理你的交易?看看链接: Configuring Spring and JTA without full Java EE
答案 1 :(得分:1)
您可能在userTransaction.begin()上遇到异常。你的catch什么也没做,所以createCriteria()失败了,因为你没有事务。