简体   繁体   中英

Preventing infinite loop data retrieval with Hibernate

I was wondering: Imagine a scenario where eg

//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)
}

Imagine that these objects have been correctly mapped into their respective Hibernate configuration files.

My question:

How would I retrieve my user with the list of all the user blogs on code level? (ie, not allow hibernate to populate blogList automatically for me. I want to add paging (ie from list 5, retrieve 20 list) and also, if you think carefully, this might be an infinite loop as a Blog has a User entity which has a List<Blog> entity.

How do I prevent this?

PS Just out of curiousity, how would I let Hibernate populate my blogList on the configuration side?

Thanks in advance.

  • Hibernate detects such loops and doesn't let them happen
  • You can mark your collection with fetch type=lazy ( fetchType=FetchType.LAZY ) so that the collection elements are not fetched when the owning object is
  • you can used a Query with setFirstResult(..) and setMaxResults(..) in order to achieve paging. (and get rid of the collection then)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM