的解决型我更新了我的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
我有完全相同的问题。你有没有找到解决办法? –