从通用T派生类
问题内容:
我有一个参数化的休眠dao,它执行基本的crud操作,并且当将参数化用作委托时,对给定的dao执行基本的crud操作。
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
我希望能够在运行时从T派生Class以便在Hibernate中创建条件查询,例如:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
我知道:
T.getClass()
不存在,但是有什么方法可以在运行时从T导出正确的Class对象吗?
我研究了泛型和反射,但没有提出合适的解决方案,也许我错过了一些东西。
谢谢。
问题答案:
您可以将Class作为构造函数参数传递。
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID> {
private final Class<? extends T> type;
public HibernateDao(Class<? extends T> type) {
this.type = type;
}
// ....
}