-1

`类路径:数据库.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,它就可以工作。我在这里做错了什么?

4

1 回答 1

0

使用 OpenSessionInView 过滤器或类似过滤器,这样您应该在请求生命周期(控制器/视图呈现)期间有一个可用的会话。

于 2013-07-27T10:45:17.167 回答