【问题标题】:Spring + Hibernate4 Error CurrentSessionContext is always nullSpring + Hibernate4 错误 CurrentSessionContext 始终为空
【发布时间】:2012-10-14 09:42:39
【问题描述】:

我在一个简单的 java 应用程序中使用 Hibernate 4 和 spring 3.1。

我使用以下代码创建 Spring SessionFactory,然后将其转换为休眠 SessionFactory: 请问这里不见了……这是正确的方法吗?还是我错过了什么..?请帮忙!

.....
......
context=new ClassPathXmlApplicationContext(new String[]{"spring.xml"});
    return (SessionFactory) context.getBean("mySessionFactory");
......

会话工厂的 CurrentSessionContext 始终为空! 所以我不能执行

sessionFactory.getcurrentSession() 

-> 给我一个 java.lang.NullPointer 异常

spring.xml 中的 myBean 声明:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd">



 <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
    <property name="username" value="root"/>
    <property name="password" value=""/>
  </bean>

      <bean id="mySessionFactory"  name="mySessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" scope="singleton">
        <property name="dataSource" ref="myDataSource"/>
        <property name="mappingResources">

          <list>
            <value>TblUrls.hbm.xml</value>
          </list>
        </property>
         <property name="hibernateProperties">
             <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
                <prop key="hibernate.show_sql">true</prop> 
                <prop key="hibernate.hbm2ddl.auto">update</prop> 
                <prop key="hibernate.show_sql">true</prop> 
                <prop key="hibernate.transaction.jta.platform">org.hibernate.service.jta.platform.internal.SunOneJtaPlatform</prop>
                <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate4.SpringSessionContext</prop>
              </props>
        </property>
      </bean>
   <bean class="org.springframework.orm.hibernate4.support.OpenSessionInViewInterceptor">
        <property name="sessionFactory">
            <ref local="mySessionFactory" />
        </property>
    </bean>

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

    </bean>
<!--   <bean id="myProductDao" class="hib.TblUrlsHome"> -->
<!--     <property name="sessionFactory" ref="mySessionFactory"/> -->
<!--   </bean> -->

</beans>

【问题讨论】:

    标签: spring hibernate sessionfactory


    【解决方案1】:

    你必须这样做
    sessionFactory.openSession();

    这应该可以解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2021-04-02
      • 2016-03-09
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多