HIbernate - @Where限制集合的XML配置

时间:2011-02-05 13:22:32

标签: hibernate

我想使用@Where提供的功能将集合仅限制为状态为ACTIVE的项目。 但是,我不能只使用注释xml。因此我在xml中寻找@Where等价物,但我找不到任何东西。

示例(我需要类似元素“where”)

<hibernate-mapping>
<class name="Teacher" table="teacher" >
    ...

    <bag name="subjects" inverse="true" cascade="save-update">
        <key>
            <column name="id_policy" />
        </key>
        <one-to-many class="Subject" />
        <where>status = 'a'</where>
    </bag>

    ....
</class>
</hibernate-mapping>

当然,我可以使用自定义集合加载器,但这对于这样简单的任务来说非常难看。 过滤器是一个更合适的选项,但它必须为Hibernate会话显式启用,我只需要总是应用这个“where”子句。

有什么想法吗?

2 个答案:

答案 0 :(得分:6)

hibernate mapping DTD提到了class元素和所有集合元素(set,bag等)的可选where属性。它没有在DTD中记录,但考虑到here关于这个“where”属性的内容,我很确定这就是你要找的东西。

答案 1 :(得分:0)

您可以轻松地在标记中添加where子句,如下例所示:

<bag name="subjects" inverse="true" cascade="save-update" where="flag_visible='S'" >