丶Mythos 2009-06-16 11:21
浏览 286
已采纳

请教,泛型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]

  • 写回答

3条回答 默认 最新

  • wanghaolovezlq 2009-06-16 11:32
    关注

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题