1) rapid-framework的解决方案
抽象类BaseHibernateDao中提供了抽象方法
public abstract Class getEntityClass();
由Dao子类实现该方法
2)appfuse的解决方案
在GenericDaoHibernate中提供了构造方法和setter
public GenericDaoHibernate(final Class<T> persistentClass),不允许无参的构造方法
3)springside的解决方案
SimpleHibernateDao获取的其父类SimpleHibernateDao的泛型类型
public SimpleHibernateDao() {
this .entityClass = ReflectionUtils.getSuperClassGenricType(getClass());
}
ReflectionUtils.getSuperClassGenricType:
Class < T > entityClass = (Class < T > )
((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[ 0 ];
抽象类BaseHibernateDao中提供了抽象方法
public abstract Class getEntityClass();
由Dao子类实现该方法
2)appfuse的解决方案
在GenericDaoHibernate中提供了构造方法和setter
public GenericDaoHibernate(final Class<T> persistentClass),不允许无参的构造方法
3)springside的解决方案
SimpleHibernateDao获取的其父类SimpleHibernateDao的泛型类型
public SimpleHibernateDao() {
this .entityClass = ReflectionUtils.getSuperClassGenricType(getClass());
}
ReflectionUtils.getSuperClassGenricType:
Class < T > entityClass = (Class < T > )
((ParameterizedType) getClass().getGenericSuperclass())
.getActualTypeArguments()[ 0 ];