我有一个执行基本 crud 操作的参数化 hibernate dao,当参数化用作委托(delegate)来完成给定 dao 的基本 crud 操作时。
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
我希望能够在运行时从 T 派生类以在 Hibernate 中创建标准查询,这样:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
我知道:
T.getClass()
不存在,但有没有办法在运行时从 T 派生出正确的 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;
}
// ....
}
关于java - 从泛型 T 派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/801940/