我使用Hibernate Template并拥有以下代码:
[ERROR] incompatible types
[ERROR] required: java.util.List<com.model.Book>
[ERROR] found: java.util.List<capture#1 of ?>
我觉得它看起来不错。但是当我运行这段代码时,我收到了一个错误:
{{1}}
我如何解决它并获得我需要的东西?提前谢谢!
答案 0 :(得分:1)
据我所知,您正按this example中的说明扩展HibernateDaoSupport
。 getHibernateTemplate()
将返回HibernateTemplate
,没有任何类型规范。哪个没关系,因为HibernateTemplate没有类型参数。
所以这个find(...)方法将返回List
个对象。实际的Hibernate代码可能会返回HibernateProxy
实例的List。此HibernateProxy
是域类的自动生成的子类,在这种情况下为Book
。
所以你所能做的就是将结果转换为正确的列表:
public List<? extends Book> findBooksByName(String name) {
return (List<? extends Book>) getHibernateTemplate().find("FROM Book WHERE name = ?", name);
}
这将使您的List
有效地为只读。这是我们为ORM方便支付的价格。