【发布时间】:2013-07-18 16:22:41
【问题描述】:
我有一个用于通用服务、dao 层的 genericService 支持类(genericService、GenericServiceImpl、GenericDao、GenericHibernateDao)。
通常它工作正常,当我从抽象通用服务扩展任何类型的参数化服务时。当我在不同的服务中扩展此扩展服务时,它会提供:
原因:java.lang.ClassCastException:java.lang.Class 无法转换为 java.lang.reflect.ParameterizedType
错误。
我的 GEnericHibernateDao:
@Transactional 公共抽象类 GenericHibernateDaoSupport 扩展 HibernateDaoSupport 实现 GenericDaoTemplate { 私有类类型;
public GenericHibernateDaoSupport() {
this.type = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
@Autowired
@Qualifier(value = "productSessionFactory")
public void bindSessionFactory(SessionFactory sessionFactory)
{
setSessionFactory(sessionFactory);
}
public Class<T> getType() {
return type;
}
public void setType(Class<T> type) {
this.type = type;
}
protected Session getCurrentSession() {
return getHibernateTemplate().getSessionFactory().getCurrentSession();
}
public ID persist(T newInstance) {
return (ID) getHibernateTemplate().save(newInstance);
}
public void update(T transientObject) {
getHibernateTemplate().update(transientObject);
}
这是我的标准扩展 HibernateDao 类:
@Repository
public class StandadHibernateDao extends standardHibernateDaoSupport<Standard, Long> implements StandardDao {
以上扩展操作工作正常,但是当我尝试这样的事情时:
@Repository
public class ExtendStandardGatewayHibernateDao extends StandadHibernateDao implements ExtendedStandardDao {
它抛出:
原因:java.lang.ClassCastException:java.lang.Class 无法转换为 java.lang.reflect.ParameterizedType。
你有什么想法吗?
【问题讨论】:
-
stackoverflow.com/questions/11067512/… 这个链接可能有帮助