2

我正在用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

我怀疑以某种方式通过添加事务停止工作的方面,但我不知道如何解决它

任何帮助将不胜感激,

4

0 回答 0