CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  框架、开源

spring+hibernate 调用 DAO 出现java.lang.NullPointerException异常,先谢谢了

楼主dingyanding(丁)2006-04-29 15:45:20 在 Java / 框架、开源 提问

applicationcontex.xml配置如下:  
  <?xml   version="1.0"   encoding="UTF-8"?>  
  <!DOCTYPE   beans   PUBLIC   "-//SPRING//DTD   BEAN//EN"   "http://www.springframework.org/dtd/spring-beans.dtd">  
   
  <beans>  
   
    <bean   name="/login"   class="com.test.struts.action.LoginAction"   singleton="false"></bean>  
   
    <bean   id="DataSource"   class="org.apache.commons.dbcp.BasicDataSource">  
    <property   name="driverClassName">  
    <value>com.mysql.jdbc.Driver</value>  
    </property>  
    <property   name="url">  
    <value>jdbc:mysql://localhost:3306/SAMPLEDB</value>  
    </property>  
    <property   name="username">  
    <value>root</value>  
    </property>  
    <property   name="password">  
    <value>123</value>  
    </property>  
    </bean>  
    <bean   id="SessionFactory"   class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
    <property   name="dataSource">  
    <ref   bean="DataSource"></ref>  
    </property>  
    <property   name="hibernateProperties">  
    <props>  
    <prop   key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
    </props>  
    </property>  
    <property   name="mappingResources">  
    <list>  
    <value>com/test/Hibernate/User.hbm.xml</value>  
    </list>  
    </property>  
    </bean>  
    <bean   id="UserDAO"   class="com.test.Hibernate.UserDAO">  
    <property   name="sessionFactory">  
    <ref   bean="SessionFactory"   />  
    </property>  
    </bean>  
  </beans>  
   
   
  DAO.java如下:  
  package   com.test.Hibernate;  
   
  import   java.util.List;  
  import   org.apache.commons.logging.Log;  
  import   org.apache.commons.logging.LogFactory;  
  import   org.hibernate.LockMode;  
  import   org.hibernate.Session;  
  import   org.hibernate.criterion.Example;  
  import   org.springframework.context.ApplicationContext;  
  import   org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
   
  /**  
    *   Data   access   object   (DAO)   for   domain   model   class   User.  
    *   @see   com.test.Hibernate.User  
    *   @author   MyEclipse   -   Hibernate   Tools  
    */  
  public   class   UserDAO   extends   HibernateDaoSupport   {  
   
          private   static   final   Log   log   =   LogFactory.getLog(UserDAO.class);  
   
  protected   void   initDao()   {  
  //do   nothing  
  }  
           
          private   static   String   hql   =   "from   User   u   where   u.username=?   ";  
   
          public   boolean   isValidUser(String   username,   String   password)   {  
   
           
           
                List   userList   =   this.getHibernateTemplate().find(hql,   username);  
   
                if   (userList.size()   >   0)   {  
   
                        return   true;  
   
                }  
   
                return   false;  
   
          }  
   
  private   Session   openSession()   {  
  //   TODO   Auto-generated   method   stub  
  return   null;  
  }  
   
   
  }  
  调用如下:  
    private   UserDAO   userDAO;  
   
  public   UserDAO   getUserDAO()   {  
   
  return   userDAO;  
  }  
   
  public   void   setUserDAO(UserDAO   userDAO)   {  
  this.userDAO   =   userDAO;  
  }  
   
  public   ActionForward   execute(  
  ActionMapping   mapping,  
  ActionForm   form,  
  HttpServletRequest   request,  
  HttpServletResponse   response)    
  {  
  DynaActionForm   loginForm   =   (DynaActionForm)   form;  
  String   username=loginForm.getString("username");  
      String   password=loginForm.getString("password");  
      if   (userDAO.isValidUser(username,password))   {  
        return   mapping.findForward("indexGo");  
      }   else   {  
        return   mapping.getInputForward();  
      }  
   
   
   
  } 问题点数:100、回复次数:4Top

1 楼dingyanding(丁)回复于 2006-04-29 15:46:16 得分 0

是在:     if   (userDAO.isValidUser(username,password))   出错!Top

2 楼IceCraft(心淡情浓)回复于 2006-04-29 15:52:19 得分 10

你的架构似乎有问题,显示层直接调用持久层了,中间的服务层呢。  
  显示层--》服务层--》持久层  
   
  需要在spring中为服务层的服务对象配置事务代理工厂,同时配置事物规则等等,然后才能调用。Top

3 楼Saro(这也不是江水,这是二十年流不尽的英雄血。)回复于 2006-04-29 16:19:06 得分 90

你的loginAction没有注入UserDao这个Bean。  
  <bean   name="/login"   class="com.test.struts.action.LoginAction"   singleton="false">  
  <property   name="userDAO"><ref   bean="UserDAO"   /></property>  
  </bean>  
  另外,singleton="false"从LoginAction的代码看来,我认为是没有必要的,Spring管理prototype的bean效率并不是很高。Top

4 楼dingyanding(丁)回复于 2006-04-29 16:28:38 得分 0

感谢saro:  
  现在有出现了这个问题:  
  type   Exception   report  
   
  message    
   
  description   The   server   encountered   an   internal   error   ()   that   prevented   it   from   fulfilling   this   request.  
   
  exception    
   
  javax.servlet.ServletException:   Hibernate   operation:   could   not   execute   query;   bad   SQL   grammar   [select   user0_.ID   as   ID,   user0_.USERNAME   as   USERNAME0_,   user0_.PASSWORD   as   PASSWORD0_   from   sampledb__user   user0_   where   user0_.USERNAME=?];   nested   exception   is   java.sql.SQLException:   Table   'sampledb.sampledb__user'   doesn't   exist  
  org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)  
  org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)  
  org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)  
  org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)  
  org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:709)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
   
  root   cause    
   
  org.springframework.jdbc.BadSqlGrammarException:   Hibernate   operation:   could   not   execute   query;   bad   SQL   grammar   [select   user0_.ID   as   ID,   user0_.USERNAME   as   USERNAME0_,   user0_.PASSWORD   as   PASSWORD0_   from   sampledb__user   user0_   where   user0_.USERNAME=?];   nested   exception   is   java.sql.SQLException:   Table   'sampledb.sampledb__user'   doesn't   exist  
  org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:223)  
  org.springframework.orm.hibernate3.HibernateAccessor.convertJdbcAccessException(HibernateAccessor.java:424)  
  org.springframework.orm.hibernate3.HibernateAccessor.convertHibernateAccessException(HibernateAccessor.java:411)  
  org.springframework.orm.hibernate3.HibernateTemplate.execute(HibernateTemplate.java:370)  
  org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:817)  
  org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:813)  
  com.test.Hibernate.UserDAO.isValidUser(UserDAO.java:119)  
  com.test.struts.action.LoginAction.execute(LoginAction.java:58)  
  org.springframework.web.struts.DelegatingActionProxy.execute(DelegatingActionProxy.java:106)  
  org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)  
  org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)  
  org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)  
  org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:709)  
  javax.servlet.http.HttpServlet.service(HttpServlet.java:802)  
   
  Top

相关问题

关键词

得分解答快速导航

  • 帖主:dingyanding
  • IceCraft
  • Saro

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo