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)