我有以下“照片”对象的映射文件(为简洁而编辑):
<hibernate-mapping ... default-access="property" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="Photo" table="Photos">
<id name="PhotoId" unsaved-value="0">
<column name="PhotoId" />
<generator class="native" />
</id>
...
<bag name="Comments" table="Comments" lazy="false" order-by="DateTimePosted desc" cascade="all-delete-orphan" inverse="true">
<key column="PhotoId" />
<one-to-many class="Comment" />
</bag>
</class>
我想对“评论”包应用 Where 子句,以仅检索“已批准”属性 = true 的评论。然而,当我把它放在适当的位置时,我遇到了一个问题场景,其中删除的照片对象没有级联删除的未批准评论(并且留下孤立的评论记录),因为它不符合 where 子句的条件!本质上,我希望除了级联删除之外遵守 where 子句,在这种情况下,我总是希望在删除照片时删除与照片相关的任何评论。
这是我的评论映射文件的编辑副本:
<hibernate-mapping ... default-access="property" default-cascade="none" default-lazy="true">
<class xmlns="urn:nhibernate-mapping-2.2" name="Comment" table="Comments">
<id name="CommentId" unsaved-value="0">
<column name="CommentId"></column>
<generator class="native" />
</id>
<property name="DateTimePosted" not-null="true" />
...
<property name="Approved" not-null="true" />
<many-to-one name="Photo">
<column name="PhotoId" />
</many-to-one>
</class>
我怎样才能解决这个问题?