数据库是MySQl的
mysql> use hibernatetest
Database changed
mysql> select * from student
-> ;
+-----------+------+----------+
| idStudent | name | number |
+-----------+------+----------+
| 1 | zjj | 20000101 |
| 2 | zhou | 20000102 |
+-----------+------+----------+
2 rows in set (0.03 sec)
Hibernate运行查询的时候有空指针异常,不知道是哪里的错误导致查询失败,错误贴上
log4j:WARN No appenders could be found for logger (com.zhoujiajun.pojo.StudentDAO).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" java.lang.NullPointerException
at com.zhoujiajun.pojo.StudentDAO.findAll(StudentDAO.java:110)【1】
at com.zhoujiajun.test.test.main(test.java:15)【2】
数据库是有连接成功,也有数据,但是查询没结果,查询会有空指针异常,不知道是哪里出问题了,希望大家有空帮我看看。。
我是Hibernate刚开始学,什么都不懂
代码用MyEclipse的DB Browser,对数据表右键,Hibernate Rever Engineering生成的代码,具体的贴上来
Student.java:
数据表的各元素的get和set
这个应该没有问题
IBaseHibernateDAO.java
- Java code
public interface IBaseHibernateDAO { public Session getSession();}
BaseHibernateDAO.java
- Java code
public class BaseHibernateDAO implements IBaseHibernateDAO { public Session getSession() { //FIXME: Implement this method return null; } }
StudentDAO.java(代码没全贴,因为就用了findAll() )
- Java code
public class StudentDAO extends BaseHibernateDAO { private static final Logger log = LoggerFactory.getLogger(StudentDAO.class); public static final String NAME = "name"; public static final String NUMBER = "number"; public List findAll() { log.debug("finding all Student instances"); try { String queryString = "from Student"; Query queryObject = getSession().createQuery(queryString);//【1】处出错 return queryObject.list(); } catch (RuntimeException re) { log.error("find all failed", re); throw re; } }}
test.java
- Java code
public class test { public static void main(String[] args) { // TODO Auto-generated method stub StudentDAO dao = new StudentDAO(); List<Student> result = dao.findAll();//【2】处出错 for(Student o : result) { System.out.println("编号:" + o.getIdStudent()); System.out.println("姓名:" + o.getName()); System.out.println("学号:" + o.getNumber()); } dao.getSession().close(); }}
然后还有配置hibernate.cfg.xml
- Java code
<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration> <session-factory> <property name="dialect"> org.hibernate.dialect.MySQLDialect </property> <property name="connection.url"> jdbc:mysql://localhost:3306/HibernateTest </property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile">MySQL55</property> <mapping resource="com/zhoujiajun/pojo/Student.hbm.xml" /> </session-factory></hibernate-configuration>