所以我有這樣的代碼:休眠類轉換異常使用列表
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();
}
我的地方把這個代碼在我的代碼以
List<FooRequirement> myList = dao.findByFoo(foo);
然後我得到一個ClassCastException,不知道我在做什麼錯。我調試了我的代碼,並且我看到我的列表(myList)應該保存FooRequirement類型的引用實際上是用Foo類型的引用填充的。
然後我發現我的錯誤:
return getCurrentSession().createQuery("select distinct fr from FooBarRequirement fr where fr.Foo.id = :FooId"
有一個「選擇不同的fr.foo」,但它應該是一個「選擇不同的FR ......」因爲我想一個列表的FooRequirements而不是Foos。
我的問題是,這個參考文獻是如何首先進入List的?我的意思是一個List如何能夠擁有一個foo?
有關類的一些信息:
所有的類都是實體,該數據庫已經爲他們的表。
Foo類有一個字段ID和一個描述。
FooRequirement類是一個ABSTRACT類,並且具有對Foo(ManyToOne)和id的引用。 FooRequirement不會擴展Foo。
FooBarRequirement類擴展了FooRequirement類,如果它是relavent。它有一個場Baz。 (ManyToOne)
我希望問題很清楚。事實上情況有點複雜,但我儘可能地簡化了它。
嗯,我不明白你的問題。 「我的意思是一個名單如何可能擁有一個富人?」 - 你究竟是什麼意思?爲什麼不能'List'持有'foo'? –
這是FooRequirements的列表。而Foo不會擴展FooRequirement。 –
你確定它不是'List'?從看你的代碼,這就是Hibernate應該做的。而且,這也不能轉換爲List 。 –