覆盖hibernate映射文件中相关实体的延迟加载设置

时间:2011-11-08 17:26:08

标签: java hibernate override lazy-loading

我有一个映射文件,为某些相关实体设置lazy=false。这对许多用例都有意义,但也有一些例外。问题是我不希望在查询时获取相关的关联以用于这些情况,这在时间上是非常昂贵的。

实体的映射示例。

<class name="Category" table="category">
    <id name="id" type="string">
      <column length="50" name="id"/>
      <generator class="uuid"/>
    </id>
    <property name="name" type="string">
      <column length="100" name="name" not-null="true"/>
    </property>
    <set inverse="true" lazy="false" name="categorySourcesList">
      <key>
        <column length="50" name="categoryid" not-null="true"/>
      </key>
      <one-to-many class="CategorySource"/>
    </set>
  </class>

我的问题是,有没有办法覆盖映射文件中设置的lazy值,可以在sql-query我自定义写入或启用延迟加载作为其中一个参数DAO?或通过一些注释?

1 个答案:

答案 0 :(得分:2)

AFAIK你不能用LAZY覆盖EAGER加载,但只能反过来。

因此,您需要将关联定义为LAZY并使用连接覆盖查询中的关联。可能有其他方法可以做到这一点,但我担心这就是我现在所知道的。