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();

    评论

报告相同问题?

悬赏问题

  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面