我有一个参数化的hibernate dao,它执行基本的crud操作,并且当参数化时用作委托来完成给定dao的基本crud操作。从泛型T派生类
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
我希望能够在运行时创建Hibernate的标准查询在T派生类,使得:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
我知道:
T.getClass()
不存在,但有什么办法在运行时从T派生正确的类对象吗?
我已经看过泛型和反射,但还没有拿出一个合适的解决方案,也许我失去了一些东西。
谢谢。
是的,这是一个解决方案,我有。如果可能的话,我宁愿能够从T派生类,而不添加类依赖。 – bowsie 2009-04-29 11:52:03
@bowsie:我明白你的痛苦。不幸的是,编译器完成删除T的所有痕迹。它被称为类型擦除:http://java.sun.com/docs/books/tutorial/java/generics/erasure.html – 2009-04-29 12:07:18