2013-11-22 64 views
0

我面临的一个问题,当我想检索与在实体一对多关系的记录里面,我想要的是获取该实体的具体记录,它里面的所有关系的集合?我怎么能使用JPA查询?JPA取3个记录实体收集一对多关系

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

JsPostDAOfetch(...)方法

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(); 
    } 

后,我打电话获取方法都JsCommentsJsPost检索?我如何设置Collection<JsComment>的最大结果?任何帮助?

回答

0

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

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

我怎么可以设置收集最大结果?

这个问题是无关紧要的,因为评论没有被提取。

边注:您的命名是可怕的。为什么不将这些实体命名为PostComment。并命名集合comments,而不是jsCommentCollection?难道post.getComments()jsPost.getJsCommentCollection()更可变吗?

+0

感谢的答案:),没有没有在NetBeans IDE本身产生从数据库变量命名为jsCommentCollection和JS是项目名称的快捷方式。对我来说我不为现实的项目做到这一点,但了解JPA技术,嗯,我从你的回答理解我的呼唤提取方法的意见将不会因为默认情况下取型loadded是懒惰。 – user2888548

相关问题