【发布时间】:2016-05-10 12:48:08
【问题描述】:
我有一个简单的设置
class Translation
string locale
enum property (NAME, DESCRIPTION)
string name
和
class SomeObject
string name
string description
set<Translation> translations;
效果很好,翻译使用 hbm 映射为多对多
<set name="translations" table="someobjecttranslations" cascade="delete-orphan" lazy="false">
<cache usage="read-write" />
<key column="someobjectid" />
<many-to-many class="Translation" column="translationid" unique="true" />
</set>
由于翻译语言环境列表可能非常庞大,因此想在此集合上利用休眠数据过滤器,所以我添加了
<filter-def name="locale" condition=" locale = :locale ">
<filter-param name="locale" type="string" />
</filter-def>
定义过滤器,并添加到映射中
<set name="translations" table="someobjecttranslations" cascade="delete-orphan" lazy="false">
<cache usage="read-write" />
<key column="someobjectid" />
<many-to-many class="Translation" column="translationid" unique="true" />
<filter name="locale" />
</set>
我之前做过类似的事情,但不是多对多集合,它一直工作正常,但是当我对集合执行此操作时,它似乎试图将语言环境与连接表匹配,而不是翻译表(这实际上是我想要的)。
数据过滤器是否真的适用于多对多集合,我应该如何设置它?
【问题讨论】:
标签: hibernate hibernate-mapping