Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate模板中的泛型问题_Java_Hibernate_Generics_Jakarta Ee_Hql - Fatal编程技术网

Java 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(“从书中,名称=?”,名称); } 我觉得它看起来不错。但是当我运行这段

我使用Hibernate模板并具有以下代码:

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);
}
公共列表