Java 没有活动事务,createCriteria无效
我使用的是Java 没有活动事务,createCriteria无效,java,spring,hibernate,Java,Spring,Hibernate,我使用的是spring4.1.3.RELEASE和hibernate4.3.7 当我尝试使用JTA事务和Hibernate条件查询时,出现了以下问题。代码: @Resource private UserTransaction userTransaction; @Resource private SessionFactory sessionFactory; public User getUserById(Integer id){ try { userTransactio
spring4.1.3.RELEASE
和hibernate4.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管理事务?请看链接:
您可能在userTransaction.begin()上遇到异常。您的catch不起任何作用,因此createCriteria()会因为您没有事务而失败。请确保您已经设置了hibernate以正确地与JTA集成。@M.Deinum您是指
线程
?目前它被设置为线程。这是否可行?一旦您基于spring,为什么不想使用spring管理事务?看看链接:这是错误的是,这是本地交易,而不是JTA。但是正如@Hazhir所提到的,如果您使用Spring来管理和配置事务,那么可以为您节省很多麻烦。