ジェネリック サービス、dao レイヤー用の genericService サポート クラス (genericService、GenericServiceImpl、GenericDao、GenericHibernateDao) があります。
通常は正常に動作します。抽象的な汎用サービスから任意のタイプのパラメーター化されたサービスを拡張すると、この拡張サービスを別のサービスで拡張すると、次のようになります。
原因: java.lang.ClassCastException: java.lang.Class を java.lang.reflect.ParameterizedType にキャストできません
エラー。
私の GENericHibernateDao:
@Transactional パブリック抽象クラス GenericHibernateDaoSupport extends HibernateDaoSupport implement 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 にキャストできません。
何か考えはありますか?