package com.guidepost.bgdao.impl;import java.util.List;import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.guidepost.bgdao.DBAdminsDAO;import exception.InValidateAdminException;public class DBAdminsDAOImpl extends HibernateDaoSupport implements DBAdminsDAO {
private List adminList;
public boolean findAdmin(String userName, String userPassword)throws InValidateAdminException {
// TODO Auto-generated method stub
boolean valide=false;
String sql=" from admins ";
adminList=getHibernateTemplate().find(sql);
System.out.println(adminList.get(0).getClass().getName());
if(adminList.size()>0){
valide=true;
return valide;
}
else{
throw new InValidateAdminException("非法登录");
}

}
}
通过测试会报错:java.lang.NullPointerException
at com.guidepost.bgdao.impl.DBAdminsDAOImpl.findAdmin(DBAdminsDAOImpl.java:18)
at com.guidepost.bgdao.impl.DBAdminsDAOImplTest.testFindAdmin(DBAdminsDAOImplTest.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:130)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

解决方案 »

  1.   

    你的错误原因跟这个帖子应该是一样的
    http://topic.csdn.net/u/20100109/22/b883bf30-53be-41ae-9ba6-0c88f5df84fe.html
      

  2.   

    我看了楼上发的连接,我跟他的情况基本相同,spring的配置文件没有什么错误的,
      

  3.   

    System.out.println(getHibernateTemplate());  //打印一下看是不是null
      

  4.   

    返回的是null,这是怎么回事呢?
      

  5.   

    应该是配置的问题,Spring配置文件中配置了SessionFactory没有?
      

  6.   

    <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-2.5.xsd">
    <bean id="datasource"
    class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName" >
    <value>java:comp/env/jdbc/myssh</value>
    </property>
    </bean>
    <bean id="sessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource">
    <ref bean="datasource" />
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.MySQLDialect
    </prop>
    <prop key="show_sql">true</prop>
    <prop key="hibernate.connection.autocommit">true</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>
    com/china/guidepost/entity/Student.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Rolesaction.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Vipstudent.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Stuteac.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Clasubject.hbm.xml
    </value>
    <value>com/china/guidepost/entity/Roles.hbm.xml</value>
    <value>com/china/guidepost/entity/Action.hbm.xml</value>
    <value>
    com/china/guidepost/entity/Studclass.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Leaveapp.hbm.xml
    </value>
    <value>com/china/guidepost/entity/Module.hbm.xml</value>
    <value>
    com/china/guidepost/entity/Absenteeism.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Teacher.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Teacherreplace.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Vipteac.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Teacsub.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Vipstuclass.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Subject.hbm.xml
    </value>
    <value>com/china/guidepost/entity/Admins.hbm.xml</value>
    <value>
    com/china/guidepost/entity/Rolesmodule.hbm.xml
    </value>
    <value>
    com/china/guidepost/entity/Studentclass.hbm.xml
    </value></list>
    </property></bean>
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
    <property name="sessionFactory">
    <ref bean="sessionFactory"/>
    </property>
    </bean>
    <!-- 事务管理器,管理事务 -->
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property>
        </bean>

    <bean id="StudentDAO"
    class="com.china.guidepost.entity.StudentDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="RolesactionDAO"
    class="com.china.guidepost.entity.RolesactionDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="VipstudentDAO"
    class="com.china.guidepost.entity.VipstudentDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="StuteacDAO"
    class="com.china.guidepost.entity.StuteacDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="ClasubjectDAO"
    class="com.china.guidepost.entity.ClasubjectDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="RolesDAO" class="com.china.guidepost.entity.RolesDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="ActionDAO" class="com.china.guidepost.entity.ActionDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="StudclassDAO"
    class="com.china.guidepost.entity.StudclassDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="LeaveappDAO"
    class="com.china.guidepost.entity.LeaveappDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="ModuleDAO" class="com.china.guidepost.entity.ModuleDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="AbsenteeismDAO"
    class="com.china.guidepost.entity.AbsenteeismDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="TeacherDAO"
    class="com.china.guidepost.entity.TeacherDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="TeacherreplaceDAO"
    class="com.china.guidepost.entity.TeacherreplaceDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="VipteacDAO"
    class="com.china.guidepost.entity.VipteacDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="TeacsubDAO"
    class="com.china.guidepost.entity.TeacsubDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="VipstuclassDAO"
    class="com.china.guidepost.entity.VipstuclassDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="SubjectDAO"
    class="com.china.guidepost.entity.SubjectDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>

    <!-- 后台的dao,真正的实现了verify方法来验证前台管理员是否存在 *3-->
    <bean id="DBAdminsDAO" class="com.guidepost.bgdao.impl.DBAdminsDAOImpl">

    <property name="sessionFactory">
    <ref bean="sessionFactory"/>
    </property>
    </bean>

    <!-- 中间层的dao,封装了验证前台、系统管理员的方法,调用了后台的dao *2-->
    <bean id="AdminsDAO" class="com.guidepost.middledao.impl.AdminsDAOImpl">
    <property name="dba">
    <ref bean="DBAdminsDAO"/>
    </property>
    </bean>

    <!-- spring管理前台管理员登陆的action,应用中间层的dao *1 -->
    <bean name="/prelogin" class="com.guidepost.struts.action.PreLoginAction">
    <property name="adminsDAO">
    <ref bean="AdminsDAO"/>
    </property>
    </bean>

    <!-- spring管理系统管理员登陆的action,应用中间层的dao  -->
    <bean name="/syslogin" class="com.guidepost.struts.action.SysLoginAction">
    <property name="adminsDAO">
    <ref bean="AdminsDAO"/>
    </property>
    </bean>

    <bean id="RolesmoduleDAO"
    class="com.china.guidepost.entity.RolesmoduleDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean>
    <bean id="StudentclassDAO"
    class="com.china.guidepost.entity.StudentclassDAO">
    <property name="sessionFactory">
    <ref bean="sessionFactory"></ref>
    </property>
    </bean></beans>
    上面是我的xml,datasource的配置正确吗?