Java hibernate中的循环引用问题

Java hibernate中的循环引用问题,java,hibernate,hibernate-mapping,Java,Hibernate,Hibernate Mapping,在学习hibernate时,我遇到了一种情况,hibernate似乎有循环引用,我不知道如何克服这种情况。我有两个班,一个是家长 private String uuid; private String name; private Set<ChildClass> childclass=new HashSet<ChildClass>(); 现在真正的问题在于,当我尝试使用迭代器方法或任何集合方法迭代列表时,它会进入无限循环,就像父对象引用子对象,子对象引用父对象一样 在我即

在学习hibernate时,我遇到了一种情况,hibernate似乎有循环引用,我不知道如何克服这种情况。我有两个班,一个是家长

private String uuid;
private String name;
private Set<ChildClass> childclass=new HashSet<ChildClass>();
现在真正的问题在于,当我尝试使用迭代器方法或任何集合方法迭代列表时,它会进入无限循环,就像父对象引用子对象,子对象引用父对象一样

在我即将进行的作业中,我有一个父类,它有许多对子类的集合引用,它们都有多对一和一对多的关系

因此,在这种情况下,我将尝试从父实体中获取子实体,如

parent.getChild().iterator()
它将运行到循环引用中。
请建议我如何避免这种情况,或者如果我走错了方向,请纠正我。据我所知,您遇到的情况如下:

ID | name | parent
1  | P1   | null
2  | P2   | P4
3  | P3   | P2
4  | P4   | P2
在本例中,您有一个循环引用,用于IDS2和ID4。这是链表的一个经典问题,有几种技术和算法可以检测到这一点。你可能想对这个话题做一些研究,因为它确实不适合作为一个答案-

但我首先要评估业务需求是否真的要求有一个具有循环依赖性可能性的结构。如果没有,则可以在addChild或setParent方法中进行检查,以验证父/子方法是否创建循环依赖项。简单的解决方案是始终要求顶级父记录的parent=null

tx1.begin();
String query="from ParentClass as pc";
Query query1=session1.createQuery(query);
List list= query1.list();
parent.getChild().iterator()
ID | name | parent
1  | P1   | null
2  | P2   | P4
3  | P3   | P2
4  | P4   | P2