我在休眠中有一个对象层次结构。我只是通过遍历层次结构来打印层次结构。
在我到达层次结构的底部之前,一切都很好。我有一个 Group 对象,其中包含 Artifact 对象的集合。我通过休眠映射设置为 Group 对象检索一组工件。我在名为 ratio 的列上执行此操作,而不是 id 列。Group 对象与工件具有一对多的关系。两个对象都有比率字段。
组映射如下所示:
<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'
有谁知道为什么休眠集合没有返回任何东西?