JPA / Hibernate - 我们不能从我们的实体中检索定义为Set的集合吗?

时间:2012-05-13 08:53:45

标签: hibernate jpa orm

我有一个像:

这样的实体
@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(Pages)指定的类型与查询不兼容   返回类型[interface java.util.Set]

我无法将favoritePages的类型更改为列表 。我怎样才能找回它?

1 个答案:

答案 0 :(得分:0)

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

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

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