请教,泛型DAO调试不通,提示java.lang.NullPointerException。

刚刚接触学习泛型DAO,按照网上的一个例子来写,运行就提示,Exception in thread "main" java.lang.NullPointerException。开发环境是myeclipse6.5,jdk5.0,只好来这里请教,代码如下:

[code="java"]文件列表1:
文件名 说明
IDao.java dao的顶层抽象接口
AbstractDao.java IDao的实现类,实现了get/update/delete等基本操作
User.java USER表对应的entity定义
IUserDao.java USER表操作DAO接口定义
UserDao.java USER表操作DAO实现
HelloGenerics.java 测试类

IDao.java
// super dao interface
public interface IDao {
public T get(PK pk);
public List getAll();
public PK save(T entity);
public void update(T entity);
public void saveOrUpdate(T entity);
public void delete(T entity);
}

AbstractDao.java
//super abstract dao class
public abstract class AbstractDao implements IDao {
private Class clz;

public AbstractDao(Class clz) {
     this.clz = clz;
 }

public T get(PK pk) {
    return (T)getSession().get(clz, pk);
 }
public List <T>getAll() {
    return getSession().createCriteria(clz).list();
 }
public PK save(T entity) {
    return (PK)getSession().save(entity);
 }
public void update(T entity) {
     getSession().update(entity);
 }
public void saveOrUpdate(T entity) {
     getSession().saveOrUpdate(entity);
 }
public void delete(T entity) {
     getSession().delete(entity);
 }

private Session session;
protected Session getSession() {
    //wrap session in a class such as HibernateUtils, then you can use   HibernateUtils.getCurrentSession() for getting a session.
    return session;
 }

}

User.java
//persist entity
public class User {
private String id;
private String name;

public String getId() {
    return id;
 }
public void setId(String id) {
     this.id = id;
 }
public String getName() {
    return name;
 }
public void setName(String name) {
     this.name = name;
 }

//... setter/getter HERE

}
IUserDao.java
//User Dao interface
public interface IUserDao extends IDao {
// all are empty
}

UserDao.java
//UserDao Implementation
public class UserDao extends AbstractDao implements IUserDao {
public UserDao() {
super(User.class);
}
// or use the following constructor
//public UserDao(Class type) {
// super(type);
//}
}

HelloGenerics.java
public class HelloGenerics {

public static void main(String[] args) {
     IUserDao userDao = new UserDao();
     User user = userDao.get("1");
    if (user != null) {
         System.out.println(user.getName());
     }

     List<User> userList = userDao.getAll();
    for (User u:userList) {
         System.out.println(user.getName());
     }
 }

}[/code]

晕哦,当然要抛空指针异常了

你的UserDao类的成员session都没有设置,你哪来的session

你什么位置抛的异常,也不说了下

public static void main(String[] args) {

IUserDao userDao = new UserDao();

User user = userDao.get("1");

if (user != null) {

System.out.println(user.getName());

}

List userList = userDao.getAll();

for (User u:userList) {

System.out.println(user.getName());

}

} 这里的什么位置????

你是在什么情况下出现的空指针?测试还是运行?有何其他什么框架整合么?
错误信息贴多一点出来