10下10下 2016-05-29 13:04 采纳率: 0%
浏览 1111

关于接口用泛型后怎么取类型,求大神指教

public class BaseDaoImpl implements IBaseDao {
private Class classz;
public BaseDaoImpl(){
Class classImpl=getClass();
Type[] types=classImpl.getGenericInterfaces();
for(int i=0;i<types.length;i++){
if(types[i] instanceof ParameterizedType){
Type[] args=((ParameterizedType) types[i]).getActualTypeArguments();
classz=args[0].getClass();
}
}
}
public void save(T t) {
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory= configuration.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tran= session.beginTransaction();
tran.begin();
session.save(t);
tran.commit();
session.close();
}
public PK get(T id) {
Configuration configuration=new Configuration().configure("/hibernate.cfg.xml");
SessionFactory sessionFactory= configuration.buildSessionFactory();
Session session=sessionFactory.openSession();
Transaction tran= session.beginTransaction();
tran.begin();
session.get(classz,id); 这一句就已经报错了
tran.commit();
session.close();
return null;
}

public static void main(String[] args) {
    BaseDaoImpl<MinBoard, Serializable> base=new BaseDaoImpl<MinBoard, Serializable>();
    MinBoard min= base.get(1);
    System.out.println(min.getName());
}

}

报的错误是
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.MappingException: Unknown entity: sun.reflect.generics.reflectiveObjects.TypeVariableImpl
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628)
at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:91)
at org.hibernate.impl.SessionImpl.fireLoad(SessionImpl.java:906)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:843)
at org.hibernate.impl.SessionImpl.get(SessionImpl.java:836)
at com.bdqn.bbs.dao.impl.BaseDaoImpl.get(BaseDaoImpl.java:48)
at com.bdqn.bbs.dao.impl.BaseDaoImpl.main(BaseDaoImpl.java:56)

  • 写回答

1条回答 默认 最新

  • 普通网友 2016-10-07 17:39
    关注

    <types.length;i++){
    if(types[i] instanceof ParameterizedType){
    Type[] args=((ParameterizedType) types[i]).getActualTypeArguments();
    classz=args[0].getClass();
    }
    }
    }
    public void save(T t) {
    Configuration configuration=new Configuration().configure("/hibernate.cfg.xml");
    SessionFactory sessionFactory= configuration.buildSessionFactory();
    Session session=sessionFactory.openSession();
    Transaction tran= session.beginTransaction();
    tran.begin();
    session.save(t);
    tran.commit();
    session.close();

    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?