我有一个多对多的关联。我的数据库中的表如下:Event
、Customer
&Customer_Event
。
在事件映射文件中,我已将关联映射为级联值"all-delete-orphan"
。
这在添加新记录时非常有效,在删除记录时也非常有效(如果客户未与其他事件关联)。但是,当一个客户与多个事件关联时,我会收到以下异常:DELETE语句与REFERENCE约束冲突。
这是有道理的,但我想知道是否有可能做到以下几点:
删除一个事件并自动删除客户关联(即Customer_Event
表中的记录),如果Customer
与另一个事件没有关联,也将其删除。(即从Customer
表中删除)
这是我在Event.hbm.xml文件中的映射:
<bag name="CustomerList" table="Customer_Event" inverse="false"
cascade="all-delete-orphan">
<key column="EventId"/>
<many-to-many class="Customer" column="CustomerId" />
</bag>
在执行删除操作之前检查此条件,或者在删除方法中再放入一个catch。
如果您有一个业务规则,请将其放入您的应用程序中。数据库主要用于数据存储。