使用Hibernate防止无限循环数据检索

时间:2010-07-15 16:51:13

标签: java hibernate

我想知道:想象一下这样的场景,例如

// POJO

public class User {

   private String userName;
   private String name;
   private String surname;
   private List<Blog> blogList;

   //All getters and setters are found here and assume they're generated.
}

public class Blog {
    private String title;
    private String content;
    private User author;
    private Date datePublished;
    private Date dateLastModified;

    //All getters and setters have been generated (by Eclipse or NetBeans)
}

想象一下,这些对象已正确映射到各自的Hibernate配置文件中。

我的问题:

如何在代码级别上使用所有用户博客列表检索我的用户? (即,不允许hibernate自动填充blogList。 我想添加分页(即从列表5,检索20列表),如果仔细考虑,这可能是一个无限循环,因为博客有一个User实体,其中有一个List<Blog>实体。

如何防止这种情况?

PS 出于好奇,我如何让Hibernate在配置端填充我的blogList

提前致谢。

1 个答案:

答案 0 :(得分:4)

  • Hibernate检测到这样的循环并且不会让它们发生
  • 您可以使用fetch type = lazy(fetchType=FetchType.LAZY)标记您的集合,以便在拥有对象
  • 时不会获取集合元素
  • 您可以使用Query setFirstResult(..)setMaxResults(..)来实现分页。 (然后摆脱收藏)