各位大侠,小可使用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)
请教:为什么?我得数据库表中是有这个用户名的。
我知道我使用的方法不正确,请教正确的使用方法,请高手举例实现,运行通过马上结贴,谢谢!
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)
请教:为什么?我得数据库表中是有这个用户名的。
我知道我使用的方法不正确,请教正确的使用方法,请高手举例实现,运行通过马上结贴,谢谢!
Configuration cfg = new AnnotationConfiguration();
SessionFactory sf = cfg.configure().buildSessionFactory();
写了之后,提示找不到hibernate.cfg.xml
<property name="mappingResources">
<list>
<value>dao/Users.hbm.xml</value></list>
</property></bean>
因为hibernate.cfg.xml的配置是在spring中的,而你并没有用spring实例化UsersDAO,所以使用getHibernateTemplate()获取默认配置是获取不到的,返回的是null