0

我有一个像这样的实体:

@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 的类型更改为 list。我怎样才能找回它?

4

1 回答 1

0

如果您没有其他选择,您可以这样做:

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

但它也有它的缺点,因为你只对查询喜欢的页面感兴趣。

于 2012-05-13T09:22:08.907 回答