的解決型我更新了我的Spring MVC環境版本4.0.0.RELEASE。閱讀本文後(https://spring.io/blog/2013/12/03/spring-framework-4-0-and-java-generics),我嘗試使用新的泛型支持來自動裝載我的GenericDAO。春季4.0:GenericDao
春3.2
在Spring 3.2的環境我爲每個DAO實例創建一個單獨的bean,並通過班級爲paramameter來構造。這是因爲我知道,在運行時不可能解析泛型類型。
@Bean
public GenericDaoImpl<Permission, Integer> permissionDao() {
return new GenericDaoImpl<Employee, Integer>(Employee.class, sessionFactory);
}
春4.0.0.RELEASE
隨着春天4.0我只需要我的自動裝配在GenericDAO像服務:
@Autowired private GenericDaoImpl<Employee, Integer> employeeDao;
並在GenericDAOImpl:
@Repository
public class GenericDaoImpl<T, PK extends Serializable> implements GenericDao<T, Serializable> {
@Autowired
private SessionFactory sessionFactory;
private Class<?> genericType;
該解決方案非常容易,並且可以在大多數情況下工作我的DAO方法。但是對於其中的一些人,我需要知道我的GenericDAO實例具有哪種類型。
@Override
public List<T> findAll() {
return getCurrentSession().createQuery("FROM " + getGenericType().getName()).list();
}
所以,我試圖用GenericTypeResolver
和ResolvableType
靜態方法來解決的類型。但我無法解決這種類型。這仍然不可能嗎?
在此先感謝。
UPDATE:
private Class<T> getGenericType() {
return (Class<T>) GenericTypeResolver.resolveTypeArgument(GenericDaoImpl.class, GenericDao.class);
}
請添加您嘗試過的代碼,但無法正常工作。 –
請檢查更新 – Tunguska
我有完全相同的問題。你有沒有找到解決辦法? –