2012-05-13 20 views
0

私はのような実体を持っている:JPA/Hibernate - エンティティからSetとして定義されたコレクションを取得できないのですか?

@Entity 
public class Book{ 
    int bookId; 
    @ManyToMany 
    Set<Page> favoritePages; 
    // getters/setters 
} 

Pageも実体です。私は、クエリ書く場合は今:今

EntityManager em = // somehow get the entity manager 
TypedQuery<Page> query = "Select favoritePages from Book where bookId=:id"; 
query.setParameter("id",2); 

List <Page> pages = query.getResultList(); 

を、これは私にTypedQuery(ページ)に指定さ

タイプは、クエリ 戻り値の型[インタフェースjava.util.Set]と互換性がないというエラーが発生します

私はリストにfavoritePagesの種類を変更することはできません。どのように私はそれを取得できますか?

答えて

0

あなたは他の選択肢を持っていない場合は、あなたが行うことができます:

TypedQuery<Book> query = "from Book where bookId=:id"; 
query.setParameter("id",2); 
Set<Page> pages = query.getSingleResult().getFavoritePages(); 

しかし、あなたが好きなページをクエリにのみ関心があるので、それはまた、その欠点を有しています。

+0

"return new HashSet(query.getResultList());"私はエラーがresultListのキャストではなく、クエリの実行にあるので、これがうまくいくとは思わない – Daud

+0

あなたは正しいDaudです。私はその選択肢を削除します。 –

関連する問題