休止状態を学習しているときに、休止状態が循環参照をしているように見える状況に遭遇しました。この状況をどのように乗り越えればよいかわかりません。親に2つのクラスがあります
private String uuid;
private String name;
private Set<ChildClass> childclass=new HashSet<ChildClass>();
これが同じマッピングファイルです
<property name="name" type="string" column="NAME" length="255" />
<set name="childclass" table="Parent_Child" lazy="extra"
cascade="save-update">
<key column="parent_id" />
<many-to-many class="com.test.child.ChildClass" column="child_id"/>
</set>
子エントリの場合は次のとおりです
private String name;
private Set<ParentClass> parent=new HashSet<ParentClass>();
private String child_id;
<property name="name" type="string" column="NAME" length="255" />
<set name="parent" table="Parent_Child" inverse="true" lazy="extra"
cascade="save-update">
<key column="child_id"/>
<many-to-many class="com.test.parent.ParentClass" column="PARENT_ID"/>
</set>
メインコードでこのようなことを試したとき
tx1.begin();
String query="from ParentClass as pc";
Query query1=session1.createQuery(query);
List list= query1.list();
親が子を参照し、再び子が親を参照するように、イテレータメソッドまたはコレクションメソッドを使用してリストを反復しようとすると、ここに本当の問題があります。
私の今後の課題では、子クラスへの非常に多くのコレクション参照を持つ親クラスがあり、すべて多対1および1対多の関係があります。
そのため、その状態では、いつでも親エンティティから子を取得しようとするようです
parent.getChild().iterator()
循環参照に遭遇します。これを回避する方法を提案するか、間違った方向に進んでいる場合は修正してください