2011-02-05 64 views
1

我想使用@Where提供的功能将集合仅限制为具有状态ACTIVE的项目。 但是,我不能仅使用注解xml。因此我在xml中寻找@Where等价物,但我找不到任何东西。HIbernate - @用于限制集合的XML配置中的等效项

实例(我需要这样的东西元素“其中”)

<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”子句总是应用。

任何想法?

回答

5

hibernate mapping DTD在类元素和所有集合元素(set,bag等)上提及了可选的where属性。它没有记录在DTD中,但给了here关于这个“where”属性的内容,我很肯定这是你要找的。

+0

这正是我需要的。非常感谢你的“超快”和相关的回应:)。 – 2011-02-05 14:23:42

0

,你可以轻松地添加在where子句中的标签,像这样的例子:

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