createCriteria 在没有活动事务的情况下无效
createCriteria is not valid without active transaction
我正在使用 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
- 事务。怎么了?
一旦您成为 spring 基础,您为什么不想使用 spring 来管理您的交易?看看 link:
Configuring Spring and JTA without full Java EE
您可能在 userTransaction.begin() 上遇到异常。您的 catch 没有执行任何操作,因此 createCriteria() 失败,因为您没有交易。
我正在使用 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
- 事务。怎么了?
一旦您成为 spring 基础,您为什么不想使用 spring 来管理您的交易?看看 link: Configuring Spring and JTA without full Java EE
您可能在 userTransaction.begin() 上遇到异常。您的 catch 没有执行任何操作,因此 createCriteria() 失败,因为您没有交易。