I have a parameterized hibernate dao that performs basic crud operations, and when parameterized is used as a delegate to fulfil basic crud operations for a given dao.
public class HibernateDao <T, ID extends Serializable> implements GenericDao<T, ID>
I want to be able to derive Class from T at runtime to create criteria queries in Hibernate, such that:
public T findByPrimaryKey(ID id) {
return (T) HibernateUtil.getSession().load(T.getClass(), id);
}
I know:
T.getClass()
does not exist, but is there any way to derive the correct Class object from T at runtime?
I have looked at generics and reflection but have not come up with a suitable solution, perhaps I am missing something.
Thanks.
You could have the Class passed as a constructor argument.
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;
}
// ....
}