Preventing infinite loop data retrieval with Hibernate

匿名 (未验证) 提交于 2019-12-03 01:04:01

问题:

I was wondering: Imagine a scenario where e.g.

//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? (i.e., not allow hibernate to populate blogList automatically for me. I want to add paging (i.e. 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.

回答1:

  • 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)


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!