本人刚学spring+hibernate框架,遇到问题:在调用this.getHibernateTemplate().save(obj)老是报空指针异常!
配置文件
<beans>
<bean id="dataSourceOracle" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="driverUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:PROMANDB" />
<property name="password" value="123" />
<property name="user" value="root" />
</bean>
<bean id="sessionFactoryOracle" name="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

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

<property name="mappingLocations">
        <list>
<value>classpath:com/gocom/beans/*.hbm.xml</value>
</list>
</property> <property name="hibernateProperties">
<props>
<prop key="hibernate.connection.isolation">2</prop>
<prop key="hibernate.format_sql">false</prop>
<prop key="hibernate.use_sql_comments">false</prop>
<prop key="hibernate.dialect">base.MyOracleDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.batch_size">25</prop>
<prop key="hibernate.generate_statistics">false</prop>
<prop key="hibernate.connection.release_mode">auto</prop>
</props>
</property>
</bean> <!-- 以下为spring提供的hibernate事务管理类 -->
<bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactoryOracle" />
</property>
</bean>

解决方案 »

  1.   

    今天才看spring视频教程,还不是很懂!!!
    不知道是this.getHibernateTemplate()为空,还是obj为空。
    如果前面为空,那么可能是配置文件的问题。
      

  2.   

     我好像这个bean配置有问题,后来重新配置了个如下:<!-- 配置oracle数据源 -->
    <bean id="dataSourceOracle" class="org.logicalcobwebs.proxool.ProxoolDataSource">
        <property name="alias" value="pb" />
    <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
    <property name="driverUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:PROMANDB" />
    <property name="password" value="123" />
    <property name="user" value="root" />
    </bean>
    <!-- 以下为spring 管理下的oracle hibernate sessinoFactory配置 其中mappingResources为开发时需添加的映射文件相对路径名称-->
    <bean id="sessionFactoryOracle" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="mappingLocations">
            <list>
    <value>classpath:com/gocom/beans/*.hbm.xml</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>
    <!-- 
    <property name="dataSource">
    <ref bean="dataSourceOracle" />
    </property>
         -->
    </bean>
    <!-- 以下为spring提供的hibernate事务管理类 -->
    <bean id="hibernateTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref bean="sessionFactoryOracle" />
    </property>

    <property name="dataSource">
    <ref bean="dataSourceOracle" />
    </property> </bean>
    可是还是一样,都是抛空指针异常!
    java.lang.NullPointerException
    at com.gocom.dao.TbProjectInfoDao.saveProjectInfo(TbProjectInfoDao.java:16)
    at com.gocom.controller.CheckInFileController.handleRequest(CheckInFileController.java:74)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:874)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:441)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:667)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    at java.lang.Thread.run(Thread.java:595)