使用hibernateTemplate.find()或者save()的时候,报空指针,并且直接输出hibernateTemplate为null

OOVII 发布于 2013/07/14 20:05
阅读 2K+
收藏 0

一下是beans.xml文件的配置。。。使用的annotation注解。。

使用hibernateTemplate.find()或者save()的时候,报空指针,并且直接输出hibernateTemplate为null


<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

 <context:annotation-config/>

 
   
   
   
   
   <context:annotation-config></context:annotation-config>
   
   <context:component-scan base-package="com.wfajj" />
 
 

  <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  <property name="locations">
   <value>classpath:jdbc.properties</value>
  </property>
 </bean>

 <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
 </bean>
 
  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
  <property name="packagesToScan">
   <list>
    <value>com.wfajj.Entity</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.format_sql">true</prop>
    <!--<prop key="hibernate.hbm2ddl.auto">update</prop>-->
   </props>
  </property>
 </bean>
 
 
 
 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
  <property name="sessionFactory" ref="sessionFactory"></property>
 </bean>


 <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"/>
 </bean>
 
 
    
 <aop:config>
  <aop:pointcut expression="execution(public * com.wfajj.servce.*.*(..))" id="service"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="service"/>
 </aop:config>
 
 <tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
   <!-- 依次分别是增删改查 -->
   <tx:method name="exists" read-only="true" />
   <tx:method name="save" propagation="REQUIRED"/>
 
  </tx:attributes>
 </tx:advice>

 
 
  <!-- 不是用annotation配置beans
  <bean id="fsd" class="...">
    
  </bean>

  <bean id="fd" class="...">
   
  </bean>
 -->
  <!-- more bean definitions go here -->

</beans>
加载中
0
夜聆风
夜聆风
哥们 错误日志 这样别人怎么能帮助你呀
OOVII
OOVII
当执行到hibernateTemplate.save(u);这个的时候,就报空指针。。我直接打印了一下hibernateTemplate 输出null 。可奇怪了
OOVII
OOVII
OOVII 你好,我这控制台不打印错误日志。用junit测试 报空指针异常
OOVII
OOVII
你好,我这控制台不打印错误日志。用junit测试
0
稻草鸟人
稻草鸟人
猜是没有注入sessionfactory
OOVII
OOVII
我发现我把sessionFactory注入UserDaoImpl中,也是空指针异常。。是不是配置的问题
稻草鸟人
稻草鸟人
回复 @OOVII : 你可以注入到具体的dao里试试
OOVII
OOVII
这段代码 <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean>
稻草鸟人
稻草鸟人
回复 @OOVII : 在哪里?没发现嘛
OOVII
OOVII
我注入了sessionFactory。。
0
OOVII
OOVII

引用来自“夜聆风”的答案

哥们 错误日志 这样别人怎么能帮助你呀

你好,我这控制台不打印错误日志。用junit测试

java.lang.NullPointerException
    at com.wfajj.dao.impl.UserDaoImpl.exists(UserDaoImpl.java:34)
    at com.wfajj.dao.impl.UserDaoImplTest.testExists(UserDaoImplTest.java:24)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
    at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
    at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
    at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
    at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
    at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
    at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

0
LucEsape
LucEsape
Java 代码贴上来,问问题要帖全相关内容啊  :)
0
稻草鸟人
稻草鸟人
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"></property>
	</bean>
@Autowired
 private JdbcTemplate jdbcTemplate;


 @Resource(name="sessionFactory")
 public void setSuperSessionFactory(SessionFactory sessionFactory) {
 super.setSessionFactory(sessionFactory);
 }
 
你可以这么试试
0
OOVII
OOVII
谢谢各位。。。我自己解决了。。。原因就是action没有加@Component注解。。导致spring无法注入action,谢谢各位认真回答
返回顶部
顶部