我有一个调用DAO方法的服务方法。服务方法注释为@Transactional
,DAO方法不注明。在运行时发生以下错误:
No Hibernate Session bound to thread, and configuration does not allow creation of non-transactional one here
当我制作DAO方法@Transactional
时,它也能正常工作。
如何在不触及DAO的情况下解决此问题? (大多数方法都是超级DAO,我无法访问。)
我正在使用hibernate-core-3.6.8
和spring-orm-4.1.6.RELEASE
DAO注释为@Repository
,服务注释为@Service
我的applicationContext.xml
看起来像这样(我刚刚提供了重要的部分 - 如果您需要更多,请告诉我):
<bean id="contextApplicationContextProvider" class="at.spardat.deploysolution.process.context.ApplicationContextProvider"/>
<tx:annotation-driven/>
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>
<util:properties id="hibernateProperties" location="classpath:hibernate.properties"/>
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
p:dataSource-ref="dataSource" p:hibernateProperties-ref="hibernateProperties">
<qualifier value="default"/>
<property name="mappingLocations">
<list>
<value>classpath:....hbm.xml</value>
</list>
</property>
<property name="lobHandler" ref="defaultLobHandler"/>
</bean>
<bean id="defaultLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"/>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory"/>
<bean id="dataFieldMaxValueIncrementer" class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer"
p:dataSource-ref="dataSource" p:incrementerName="TB_OID_SEQUENCE" p:columnName="OID_VALUE">
<qualifier value="default"/>
</bean>
答案 0 :(得分:0)
你能改变吗?
的hibernate.current_session_context_class = <强>螺纹强>
在你的hibernate属性文件中
由于