Mam sparametryzowaną hibernację dao, która wykonuje podstawowe operacje crud, a gdy jest sparametryzowana, jest używana jako delegat do wykonywania podstawowych operacji crud dla danego dao.Klasa pochodna z Generic T
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
Chcę, aby móc czerpać klasę z T w czasie wykonywania do tworzenia kryteriów zapytań w Hibernate, tak że:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
wiem:
T.getClass()
nie istnieje, ale czy istnieje sposób na uzyskanie prawidłowego obiektu klasy z T w czasie wykonywania?
Przyjrzałem się rodzajom i refleksji, ale nie znalazłem odpowiedniego rozwiązania, być może czegoś brakuje.
Dzięki.
Tak to jest jedno rozwiązanie mam. Wolałabym móc wyprowadzić klasę z T, jeśli to możliwe, bez dodawania zależności Class. – bowsie
@bowsie: Rozumiem twój ból. Niestety, kompilator kończy kasowanie wszystkich śladów T. Nazywa się to typem erasure: http://java.sun.com/docs/books/tutorial/java/generics/erasure.html –
Ahh okay, dzięki Adam. – bowsie