2015-10-16 36 views
1

当使用Java注释,我只需要声明的bean:事务在Java中春

public HibernateTransactionManager transactionManagement 
(SessionFactory sessionFactory) { 
    HibernateTransactionManager tx = new HibernateTransactionManager 
      (sessionFactory); 
    return tx; 
} 

然后给@Transactional上述方法。 但随着XML配置,我所做的:

<bean id="transactionManager" 
    class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory"></property> 
</bean> 
<bean id="countryDAOImp" class="src.com.model.CountryDAOImp"> 
</bean> 
<tx:annotation-driven proxy-target-class="true" /> 

而这个错误发生:NoClassDefFoundError: org/hibernate/engine/transaction/spi/TransactionContext

我错过了什么? :D 谢谢!

+1

在您的类路径中是否存在['hibernate-core'](http://mvnrepository.com/artifact/org.hibernate/hibernate-core)? – Tunaki

+0

我正在使用maven,我确实在pom文件中添加了hibernate-core :) – Einsamer

+0

您能向我们展示整个堆栈跟踪吗?如果你使用eclipse检查这个包和类是否在maven依赖中。然后检查它们是否在目标文件夹中...像target/$ {projectName}/WEB-INF/lib –

回答

1

我认为这个问题与你的spring hibernate兼容性有关。

检查您的spring依赖版本和hibernate版本的兼容性。您使用的是org.springframework.orm.hibernate4.HibernateTransactionManager。您必须使用hibernate 4.x版本的依赖关系。

试试这个组合4.1.0.Final with spring 3.1.1.RELEASE它应该工作。