晕!那有什么用呀,我的意思就是用一个get方法的到一条记录,你的这种写法是要写sql语句地,不行!

解决方案 »

  1.   

    1.建一个父类,如baseDAO,里面有增加两个方法
    getReferenceClass------------------
    protected abstract Class getReferenceClass();
    load------------------------
    protected Object load(Class refClass, Serializable key) throws HibernateException {
    Session s = null;
    try {
    s = getSession();
    return s.load(refClass, key);
    } finally {
    closeSession(s);
    }
    }2.所有DAO继承这个父类,重写这两个方法。如DepartmentDAO 中:
    getReferenceClass ------------------------------
    public Class getReferenceClass () {
    return com.erp.hibernate.entity.Department.class;
    }load-------------------------------------------
    public com.erp.hibernate.entity.Department load(java.lang.String key)
    throws net.sf.hibernate.HibernateException {
    return (com.erp.hibernate.entity.Department) load(getReferenceClass(), key);
    }3.使用
    try {

    _RootDAO.initialize();
    DepartmentDAO dao = DepartmentDAO.getInstance();
    Department department = dao.load(departmentId); DepartmentForm departmentForm = new DepartmentForm();
    departmentForm.setId(department.getId());
    departmentForm.setName(department.getDeptName());
    departmentForm.setDesc(department.getDeptDesc());
    return departmentForm;

    } catch (Exception e) { return null;
    }
    }
      

  2.   

    好像写错了一小点。
    1.baseDAO的load方法中:
    return s.load(getReferenceClass(), key);2.其它DAO类的load方法中:
    return (com.erp.hibernate.entity.Department) load(key);3.使用仍然是Department department = dao.load(departmentId);
      

  3.   

    表名做为形参,
    String queryStr = "from " + 表名;
    想法就这样。可从这方面出发。
      

  4.   

    BigHill(山河水) 
    谢谢你!虽然你的方法还是达不到我的要求(一个表就要对应一个继承这个父类DAO),不过也不挺好的也许以后用的上。