我想使用@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”子句。
有什么想法吗?
答案 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'" >