Java Hibernate模板中的泛型问题
我使用Hibernate模板并具有以下代码:Java Hibernate模板中的泛型问题,java,hibernate,generics,jakarta-ee,hql,Java,Hibernate,Generics,Jakarta Ee,Hql,我使用Hibernate模板并具有以下代码: public List<Book> findBooksByName(String name) { return getHibernateTemplate().find("FROM Book WHERE name = ?", name); } 公共列表findBooksByName(字符串名称){ 返回getHibernateTemplate().find(“从书中,名称=?”,名称); } 我觉得它看起来不错。但是当我运行这段
public List<Book> findBooksByName(String name) {
return getHibernateTemplate().find("FROM Book WHERE name = ?", name);
}
公共列表findBooksByName(字符串名称){
返回getHibernateTemplate().find(“从书中,名称=?”,名称);
}
我觉得它看起来不错。但是当我运行这段代码时,我得到了一个错误:
[ERROR] incompatible types
[ERROR] required: java.util.List<com.model.Book>
[ERROR] found: java.util.List<capture#1 of ?>
[ERROR]不兼容的类型
[错误]必需:java.util.List
找到[错误]:java.util.List
我怎样才能修好它,得到我需要的东西?提前谢谢你 据我所知,您正在扩展一个
HibernateDaoSupport
,如中所述。将返回一个不带任何类型规范的HibernateTemplate
。这没关系,因为HibernateTemplate没有类型参数
因此,这个find(…)方法将返回对象的列表。实际的Hibernate代码可能返回HibernateProxy
实例列表。此HibernateProxy
是域类的自动生成子类,在本例中为Book
因此,您所能做的就是将结果转换为正确的列表:
public List<? extends Book> findBooksByName(String name) {
return (List<? extends Book>) getHibernateTemplate().find("FROM Book WHERE name = ?", name);
}
公共列表