附加信息: 通过调试 发现 继承了HibernateDaoSupport的那个AdministratorDAO在返回HibernateTemplate是为Null.但检查Spring和Hibernate的配置又确实没见到问题。抠抠头。。

解决方案 »

  1.   

    同意楼上,可能是findByProperty传递了NULL参数
      

  2.   

    在调试的过程中我试过多种参数。最开始是在action里面生成一个po对象并一直传递下来给servic类。后来传过String是直接写死的参数。再后来也传过int,都是一个问题。DAO并没有获得HibernateTemplate.可以排除不是空参数问题。
      

  3.   

    这个容易,你看看AdministratorDAO.java:99
    这个位子,肯定有空值,你判断下
      

  4.   

    public List findByProperty(String propertyName, Object value) {
          log.debug("finding User instance with property: " + propertyName
                + ", value: " + value);
          try {
             String queryString = "from User as model where model." + propertyName + "=?";
    99:  return getHibernateTemplate().find(queryString, value);
          } catch (RuntimeException re) {
             log.error("find by property name failed", re);
             throw re;
          }
    }第99行已经注明,这个DAO其实是hibernate自动生成的。如果说空值那我推断是getHibernateTemplate()这个返回了null,也就是上文说的 hibernateTemplate为null
      

  5.   

    现在看来就是getHibernateTemplate()返回Null,请问各位大大遇到类似的问题时是怎么解决的?
      

  6.   

    这个我也遇到过是,是你的service没有配置相应的property中的DAO没有配置好
      

  7.   

    那肯定是你的AdministratorDAO中没有注入HibernateTemplat
      

  8.   

    这打半是因为你用到了spring的配置文件来加载Hibernate配置信息。HibernateTemplate必须是在spring的配置文件加载后,才可以被加载到内存中;如果直接在测试类中new 一个接口实现类,然后调用gethibernatetemplate()来实现功能的crud.则会包空指针异常。
      

  9.   

    出现空指针异常!你在你Spring中的xml配置了信息了么
    上面的异常我都看了!不是说没有注入DAO的对象问题!
    应该是Dao对象调用了执行HQL的语句的时候出了错误!
    也就是说你从Action有一个值然后通过Service调用DAO
    这里说问题在DAO这里就是说方法已经调用了!
    这就很明显了!你的action并没有给传过去值!
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77) 
    这个异常不是很明显么!web的拦截器拦截你传来的参数,这个需要你在XML中配置的!
    否则action是根本不可能传过去参数的!