JPA在实体集合OneToMany关系中获取3条记录

时间:2013-11-22 14:16:06

标签: java hibernate jpa

当我想在实体中检索具有OneToMany关系的记录时,我遇到了一个问题,我想要的是获取实体的特定记录以及其中的所有关系的集合?我怎么能用JPA查询呢?

...
public class JsPost implements Serializable, Comparable<JsPost> {
        ...
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "postId")
        private Collection<JsComment> jsCommentCollection;
        ...
}

JsPostDAO fetch(...)方法

    public List<JsPost> fetch(int min, int max) {
            Query query = em.createQuery("SELECT p FROM JsPost p order by p.postDateCreated DESC");
            query.setFirstResult(min);
            query.setMaxResults(max);
            return query.getResultList();
    }

我调用fetch方法后检索JsComments的所有JsPost?如何设置Collection<JsComment>的最大结果?有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

  

在我调用fetch方法后,JsPost的所有JsComments都被检索了?

没有。默认情况下,该关联是惰性的,因此该查询不会由数据库加载JsComment实例。只有在somePost.getJsCommentCollection()上调用方法时才会检索帖子的评论。

  

如何设置Collection的最大结果?

这个问题无关紧要,因为没有提到评论。

旁注:你的命名很糟糕。为什么不命名这些实体PostComment。并命名集合comments,而不是jsCommentCollection?拥有post.getComments()而不是jsPost.getJsCommentCollection()

是不是更容易更新?