我收到了 HibernateSystemException ,虽然我做了不同论坛上提到的所有内容。
这是applicationContext.xml的一部分
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
我还将@Transactional注释放在了我的班级之上。
@Transactional
public class MyClassImpl
答案 0 :(得分:2)
A)这是错误的交易经理:
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
您需要org.springframework.orm.hibernate3.HibernateTransactionManager
,正如您在13.3.3 Hibernate > Declarative transaction demarcation中所看到的那样。
DataSourceTransactionManager
适用于纯JDBC,不适用于Hibernate(请参阅12.3.8 JDBC > DataSourceTransactionManager
)。
B)你也需要这一行:
<tx:annotation-driven transaction-manager="transactionManager" />
答案 1 :(得分:1)
您是否检查过该应用程序上下文文件中是否存在此标记?
<context:annotation-config />
有必要考虑您的注释。
答案 2 :(得分:0)
您是否在配置中包含了tx名称空间?
答案 3 :(得分:0)
在做任何请求之前,您可以尝试这段代码:
Session session = SessionFactoryUtils.getSession(dataSource, null, null);
TransactionSynchronizationManager.bindResource(dataSource, new SessionHolder(session));
请随时通知我。