2013-07-27 62 views
-1

` 类路径: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它的工作。我在这里做错了什么?

+0

请发表具体代码的问题,关于“我没有在我的存储库类中获取当前会话”。没有提供代码来显示错误发生的方式/位置。投票结束。 –

回答

0

使用OpenSessionInView过滤器或类似的方法,这样您就可以在请求生命周期(控制器/视图呈现)期间使用Session。

+0

我不认为如果我真的需要这样的东西。任何我使用bean标签时获取会话的方式。我应该可以在这里获得会议。该死的究竟是怎么回事 – varun

+0

你如何在你的@Repository类中获得Session?给我们看一看。如果你不使用OpenSessionInView,你如何期望延迟加载在你的JSP页面中工作? –

+0

我不想在我的jsp页面中进行任何延迟加载,如果我想要任何惰性数据,我将初始化服务层中的实体类。我的问题是,如果需要实现一个过滤器来初始化会话,那么当我使用XML配置文件中的标记创建bean时它是如何工作的? – varun