无法获得当前会话

时间:2013-07-27 10:15:43

标签: spring hibernate

`                           类路径:database.properties                                                            

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="dataSource">
        <ref bean="dataSource" />
    </property>

    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
            <prop key="hibernate.hbm2ddl.auto">update</prop>
        </props>
    </property>

    <property name="packagesToScan" value="org.entity">

    </property>

</bean>
<bean id="transactionManager"
    class="org.springframework.orm.hibernate4.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>

</bean>
<tx:annotation-driven/>
<!-- not working -->
<!-- <context:component-scan base-package="org.service"></context:component-scan> -->

` 这是我的spring配置文件。问题是我没有在我的使用@Repository标记的存储库类中获取当前会话,我使用@Transactional注释注释了我的服务方法。 然而,所有自动装配工作正常,唯一的问题是当我尝试在存储库类中获取当前会话时,如果我使用bean标记来实例化我的存储库和服务bean,它就可以工作。我在这做错了什么?

1 个答案:

答案 0 :(得分:0)

使用OpenSessionInView过滤器或类似方法,这样您就可以在请求生命周期(Controller / View渲染)中使用Session。