org.hibernate.MappingException: Unknown entity: java.lang.Object
来源:互联网 发布:九阴绝学手游进阶数据 编辑:程序博客网 时间:2024/05/16 19:33
HibernateGenericDao<Users> dao = new HibernateGenericDao<Users>();你这样是得不到Users的,原因是这样的: //取得该类的实体类型 Type genType = clazz.getGenericSuperclass(); //判断该类是否是泛型类 if(!(genType instanceof ParameterizedType)) { return Object.class; }你在使用泛型DAO的时候,采用的是直接使用泛型DAO类:HibernateGenericDao<Users> dao = new HibernateGenericDao<Users>();所以,这个dao的类型仍然是HibernateGenericDao;使用getGenericSuperclass()方法得到的就是这个类的父类,Object;所以你直接返回了一个Object.class,注意,为什么这个方法的名字叫做getGenericSuperclass(),这个superclass已经说明了要使用反射获得具体的泛型类型的方式应该是:class UserDAO extends HibernateGenericDao<User> implements IUserDAO{}这样就行了,一定要有一个具体类型的子类,UserDAO里面的泛型类型(User)才能够被固定下来。另外也不用尝试直接把HibernateGenericDao转型为ParameterizedType,因为就算你代码为:HibernateGenericDao<Users> dao = new HibernateGenericDao<Users>();你dao.getClass得到的仍然是HibernateGenericDao<T>,这个T对于dao的类型来说,仍然只是个泛型类型,不会是真实的User.class所以,如果你要坚持直接使用HibernateGenericDAO的话,建议你把User.class作为一个构造方法参数穿进去就可以了。
追问
你说的有道理。我又创建下面的类继承HibernateGenericDao<Users>就可以了public class UserDaoImpl extends HibernateGenericDao<Users> implements UserDao{ }你说的将User.class作为一个构造方法参数传进去,我不太明白User.class作为哪一个构造函数的参数传进去,麻烦你能不能说的具体点
回答
public class HibernateGenericDao<T> implements GenericDao<T>{ private Class<T> persistClass;public HibernateGenericDao(){ this(null);} public HibernateGenericDao(Class<T> pclass) {if(pclass==null) persistClass =GenericUtil.getSuperClassGenericType(getClass());elsethis.persistClass=pclass; }如果你要直接用HibernateGenericDao:HibernateGenericDao<Users> dao = new HibernateGenericDao<Users>(Users.class);
0 0
- org.hibernate.MappingException: Unknown entity: java.lang.Object
- org.hibernate.MappingException: Unknown entity: java.lang.Class解决办法
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity
- org.hibernate.MappingException: Unknown entity:
- org.hibernate.MappingException: Unknown entity:
- 第八周 项目一 (3) 实现复数类中的运算符重载 完整的类
- 【c语言】判断一个数n能否同时被3和5整除
- Unlocker 1.9.2.0右键强删工具袖珍版:
- iOS UIButton实现点击后两种状态的相互改变效果
- H.264RTP封包原理
- org.hibernate.MappingException: Unknown entity: java.lang.Object
- MHA 手动故障转移
- epoll详解
- 物理引擎
- Android 二维码 生成和识别(附Demo源码)
- 关于- (UIImage *)stretchableImageWithLeftCapWidth: topCapHeight:
- 【c语言】将100~200之间的素数输出
- ExpandableListView讲解
- 【GitHub】【Html5】学习记录1