Java 具有列表的Hibernate类强制转换异常

Java 具有列表的Hibernate类强制转换异常,java,hibernate,list,generics,Java,Hibernate,List,Generics,所以我有这个代码: public List<FooRequirement> findByFoo(Foo foo) { return getCurrentSession().createQuery("select distinct fr.foo from FooBarRequirement fr where fr.Foo.id = :FooId") .setParameter("FooId", foo.getId()).list(); } 有一个“选择

所以我有这个代码:

public List<FooRequirement> findByFoo(Foo foo) {
    return getCurrentSession().createQuery("select distinct fr.foo from FooBarRequirement fr where fr.Foo.id = :FooId")
            .setParameter("FooId", foo.getId()).list();
}
有一个“选择不同的fr.foo”,但它应该是一个“选择不同的fr…”,因为我想要的是一个foo需求列表,而不是foo

我的问题是,这一引用最初是如何进入名单的?我的意思是,一份清单怎么可能包含一个foo

有关课程的一些信息:

所有的类都是实体,数据库为它们提供了表

Foo类具有字段id和描述

FooRequirement类是一个抽象类,具有对Foo(manyTone)的引用,id.FooRequirement不扩展Foo

FooBarRequirement类扩展了FooRequirement类(如果它是相关的)。它有一个野战区。(许多人)


我希望问题是清楚的。事实上,情况有点复杂,但我试着让它尽可能简单

您正在查询中显式选择Foo对象
选择distinct fr.Foo…

因此,这就是最终出现在
列表中的类型

编辑:您已将想要的列表定义为
List
。但是,您从
会话
获得的结果列表未键入,因此可以在您的实例中保存任何
对象
-
Foo


由于从Hibernate <代码>会话< />代码中无法获得<代码> TyPueQue>代码,您可以考虑使用.< /P>,我不理解您的问题。代码>我的意思是一个列表怎么可能包含一个foo?

-你的确切意思是什么?为什么
列表不能容纳
foo
?它是一个foo需求列表。而且Foo没有扩展FooRequirement。您确定它不是
列表
?从您的代码来看,这就是Hibernate应该做的。而且,这也不能被转换到
列表中List@Pisek这是一个玩笑吗?列表不是只允许保存FooRequirement对象吗?不,您尝试返回的结果列表有此限制,但会话的结果列表没有。
List<FooRequirement> myList = dao.findByFoo(foo);
return getCurrentSession().createQuery("select distinct fr from FooBarRequirement fr where fr.Foo.id = :FooId"