各位大侠,小可使用hibernate 反向工程从数据库中生成了一个类,名为UsersDAO,如下:
public class UsersDAO extends HibernateDaoSupport {
private static final Log log = LogFactory.getLog(UsersDAO.class);
// property constants
public static final String USER_NAME = "userName";
public static final String USER_PWD = "userPwd";
public static final String USER_STATUS = "userStatus"; protected void initDao() {
// do nothing
}
略 public List findByProperty(String propertyName, Object value) {
log.debug("finding Users instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Users as model where model."
+ propertyName + "= ?";
return getHibernateTemplate().find(queryString, value);
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
} public List findByUserName(Object userName) {
return findByProperty(USER_NAME, userName);
}
。。略
做了个main函数来调用它,如下:
package dao;public class testUsersDAO { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
     UsersDAO userDAO = new UsersDAO();
     userDAO.findByUserName("ha");
}}
报异常:
Exception in thread "main" 10:35:36,468 ERROR UsersDAO:88 - find by property name failed
java.lang.NullPointerException
at dao.UsersDAO.findByProperty(UsersDAO.java:86)
at dao.UsersDAO.findByUserName(UsersDAO.java:94)
at dao.testUsersDAO.main(testUsersDAO.java:11)
java.lang.NullPointerException
at dao.UsersDAO.findByProperty(UsersDAO.java:86)
at dao.UsersDAO.findByUserName(UsersDAO.java:94)
at dao.testUsersDAO.main(testUsersDAO.java:11)
请教:为什么?我得数据库表中是有这个用户名的。
我知道我使用的方法不正确,请教正确的使用方法,请高手举例实现,运行通过马上结贴,谢谢!

解决方案 »

  1.   

    是要在spring框架中使用的。没有hibernate.cfg.xml这个文件,所以好像不能用
    Configuration cfg = new AnnotationConfiguration();
      SessionFactory sf = cfg.configure().buildSessionFactory();
    写了之后,提示找不到hibernate.cfg.xml
      

  2.   

    return getHibernateTemplate().find(queryString, value);出错的是不是这一行,估计getHibernateTemplate()返回的记过是null,你没有hibernate.cfg.xml文件或者该文件没有放到默认位置
      

  3.   

    你的hibernate 反向工程难道没有生成hibernate.cfg.xml文件
      

  4.   

    没有啊,是和spring一起用的,所以没有生成,直接写到spring的配置文件里了。
      

  5.   

    spring配置里面有
    <property name="mappingResources">
    <list>
    <value>dao/Users.hbm.xml</value></list>
    </property></bean>
      

  6.   

    debug看看getHibernateTemplate()有值么
      

  7.   

    既然是把hibernate集成到spring中了,就不能用UsersDAO userDAO = new UsersDAO();这样的方法实例UsersDAO了,你换成spring获取bean的形式试试。
    因为hibernate.cfg.xml的配置是在spring中的,而你并没有用spring实例化UsersDAO,所以使用getHibernateTemplate()获取默认配置是获取不到的,返回的是null