在哪里添加fetch属性 - 集合或关联?

时间:2013-05-16 08:43:25

标签: hibernate

考虑以下关联:

<class name="Person">
    <id name="id" column="personId">
        <generator class="native"/>
    </id>
    <set name="addresses" table="PersonAddress" lazy="false">
        <key column="personId"/>
        <many-to-many column="addressId" class="Address"/>
    </set>
</class>

<class name="Address">
    <id name="id" column="addressId">
        <generator class="native"/>
    </id>
</class>

现在,如果我想指定fetch = join|select|subselect属性,我在哪里指定它? <set>元素或<many-to-many>元素?

此外,生成的查询会有什么不同吗?

1 个答案:

答案 0 :(得分:0)

您已设置lazy="false"。这相当于FetchType.EAGER。所以你不需要再次使用FetchType。在注释的情况下使用FecthType并且您正在使用基于xml的配置。


根据您编辑的问题,由于您需要fetchmode,因此您可以通过向fetch

添加set属性来定义该问题

<set name="addresses" table="PersonAddress" lazy="false" fetch="select">

您的fetchMode确定将由hibernate生成的查询类型。

给出了一个很好的解释here