我正在用spring编写一个简单的应用程序,我用spring注释定义了我的daos和服务,并将hibernate定义为orm和事务管理器,如下所示:
<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
destroy-method="close" p:driverClassName="${jdbc.driverClassName}"
p:url="${jdbc.databaseurl}" p:username="${jdbc.username}" p:password="${jdbc.password}" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:env/hibernate.cfg.xml</value>
</property>
<property name="packagesToScan">
<list>
<value>com.skyfence.management.cm.model</value>
</list>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">create</prop>
</props>
</property>
</bean>
<tx:annotation-driven />
<bean id="transactionManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory" />
</bean>
就像您看到的那样,我正在使用注释进行事务管理,直到此时一切正常。然后我添加了一个 Logger Aspect 以在每个方法之前和之后添加 log4j 打印输出,因此我将以下内容添加到我的 applicationContext.xml
<aop:aspectj-autoproxy />
并创建了一个新的带注释的方面类:
@Aspect
@Component
public class LoggingAspect
{
}
问题是从那时起休眠不再工作,我得到以下异常: org.hibernate.HibernateException: No Session found for current thread
我怀疑以某种方式通过添加事务停止工作的方面,但我不知道如何解决它
任何帮助将不胜感激,