【发布时间】:2017-02-11 08:33:00
【问题描述】:
我有 3 个课程:
EventPublicEvent extends EventPersonalEvent extends Event
我的休眠映射文件如下所示。我想为PersonalEvent 添加一个过滤器,在加载这个对象之前,我启用了过滤器。但这不起作用。我的休眠版本是4.3.11.Final。
Event.hbm.xml
<hibernate-mapping>
<class name="org.calendar.Event">
...
<filter name="personalEventAuthorize" condition="person_ID = :personId" />
</class>
<joined-subclass name="org.calendar.PersonalEvent" extends="org.calendar.Event">
<key column="id" property-ref="id" />
...
<many-to-one name="person" column="person_ID" entity-name="org.person.Person" />
</joined-subclass>
<joined-subclass name="org.calendar.PublicEvent" extends="org.calendar.Event">
<key column="id" property-ref="id" />
...
</joined-subclass>
<filter-def name="personEventAuthorize">
<filter-param name="personId" type="integer" />
</filter-def>
</hibernate-mapping>
PersonalEventRepository
@Override
public PersonalEvent load(Long id) {
Filter filter = getSession().enableFilter("personEventAuthorize");
filter.setParameter("personId", getAuthenticatedPersonId());
return super.loadById(id);
}
休眠生成的 SQL 查询没有我的过滤器。我的问题是什么?为什么休眠不能为加入的子类启用过滤器? 谢谢大家...
【问题讨论】:
标签: java hibernate orm nhibernate-mapping hibernate-filters