本帖最后由 xiaogutou1 于 2013-10-20 16:52:47 编辑

解决方案 »

  1.   

    估计是你BasicDAO的构造函数里出问题,你要获得实体类的类型,用注解吧,比这个简单
      

  2.   

    struts1 看着就很不爽啊  用2 不是很好嘛?
      

  3.   

    BasicDAO 应该不能实例化吧,你想实例化的应该是UserDao ,Spring文件里面配置换下试试看。
      

  4.   


    public BasicDao(){
            //Type genType = getClass().getGenericSuperclass();
            //Type[] params=((ParameterizedType)genType).getActualTypeArguments();
            //entityClass = (Class)params[0];
    }把构造方法里面的代码先注释掉,再测试一下。还有那个public T get(Serializable id)这个方法也注释掉,因为用到了entityClass.
    先确定问题在哪里。如果注释掉运行find能找到数据而且不报错的话就想想如何替代这个entityClass的获取方式。
    因为没有使用过SSH框架,意见只供参考。
      

  5.   

    额没有用struts哟!只有spring和hibernate
      

  6.   

    我不熟悉你的BasicDao构造方法里获取实体类的方法,所以也不知道是什么错,给你提供一种方法,我也写过类型的泛型DAO,获取实体类我是用的注解
    首先定义一个注解package com.web.annotation;import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;/**
     * 用于标注该DAOImpl类所对应的实体类的名字是什么,以便获取相应的实体类
     * @author 
     *
     */@Retention(RetentionPolicy.RUNTIME)//代表在运行期保留注解
    @Target(ElementType.TYPE)//代表用于类中
    public @interface EntityClassName {

    /**
     * 标注对应的实体类名
     * @return 对应的实体类名
     */
    String value();}
    然后在BasicDao里写一个方法/**
     * 获取该DAO实现类的对应的实体类
     * @return 实体类
     * @throws Exception
     */
    private Class<?> getPOJOClass() throws Exception{

    Class<?> pojoClass = null;
    //先判断该实现类的实体类注解是否存在
    if(this.getClass().isAnnotationPresent(EntityClassName.class)){

    //如果存在获取该注解(即实体类的名字)
    String className = ((EntityClassName)getClass().
     getAnnotation(EntityClassName.class)).value();
    //通过反射获取该实体类
    pojoClass = Class.forName(className);
    }

    return pojoClass;
    }
    你要用到实体类的时候就用这个方法获取然后在你的UserDAO上打上这个注解package com.user.dao;
     
    import com.jdbc.bean.User;
    import com.util.BasicDao;@EntityClassName("com.web.bean.User") //标注该DAO类是对应于哪个实体类,(包名改成你自己的)
    public class UserDao extends BasicDao<User> {
     
    }
      

  7.   

    已经解决了!!只要吧basicDao构造器中的代码移至子类Dao的构造器之中即可!!