我有一個參數化的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