Хочется иметь для DAO строго типизованные методы. Для методов, которым надо явно указать класс, на котором действует метод, это сделать несложно. Например, так:
Код | public <T> T findById(Class<T> clazz, Long id) { return (T) getSession().get(clazz, id); }
|
или так
Код | public <T> List<T> findByExample(Class<T> clazz, T exampleInstance) { Criteria crit = getSession().createCriteria(clazz); return (List<T>) crit.list(); }
|
Однако, для методов, использующих NamedQuery, базовый класс задаётся неявно - а именно классом, на котором определён конкретный NamedQuery. Как узнать тип базового класса и типизовать метод DAO в этом случае? |