休止状態のオブジェクトの階層があります。階層をループして階層を出力しているだけです。
階層の一番下に到達するまで、すべてがうまく出力されます。Artifact オブジェクトのコレクションを持つ Group オブジェクトがあります。グループ オブジェクトのアーティファクトのセットを取得するために、休止状態のマッピングによって設定します。id 列ではなく、 ratio という列でこれを行いました。Group オブジェクトは、アーティファクトと 1 対多の関係にあります。どちらのオブジェクトにも比率フィールドがあります。
グループ マッピングは次のようになります。
<hibernate-mapping>
<class name="Group" table="Group">
<id name="id" type="int">
<generator class="native" />
</id>
<property name="ratio" type="string"></property>
<set name="artifacts" table="Artifact"
inverse="true" lazy="true" fetch="select">
<key>
<column name="ratio" not-null="true" />
</key>
<one-to-many class="Artifact" />
</set>
</class>
</hibernate-mapping>
アーティファクト マッピング:
<hibernate-mapping>
<class name="Artifact" table="Artifact">
<id name="id" type="int">
<generator class="native" />
</id>
<property name="ratio" type="string"></property>
</class>
</hibernate-mapping>
問題は、グループ オブジェクトが出力されることですが、アーティファクトはクエリで何も返さないことです。各グループから返された比率を印刷しました。次に、sql ステートメントをコピーして休止状態の出力を出力し、where ステートメントの条件で比率を代入すると、すべてが正しく返されます。
select artifact0_.ratio as rat2_3_1_, artifact0_.id as id1_, artifact0_.id as id4_0_, artifact0_.ratio as rat2_4_0_from Artifact artifact0_ where artifact0_.ratio='1'
休止状態のコレクションが何も返さない理由を知っている人はいますか?