行为不明确和/或危险的休眠映射问题。我有一个一对多的关系,它有一个级联删除孤儿条件和一个 where 条件来限制集合中的项目。在这里映射 -
<hibernate-mapping>
<class name="User" table="user" >
<!-- properties and id ... -->
<set table="email" inverse="true" cascade="all,delete-orphan" where="deleted!=true">
<key column="user_id">
<one-to-many class="Email"/>
</set>
</class>
</hibernate-mapping>
现在假设我有一个用户对象,它与一个或多个电子邮件对象相关联,其中至少一个具有已删除属性的“真”值。当我在 User 对象上调用 session.delete() 时,会发生以下哪两种情况?
- 删除用户和所有电子邮件对象,包括已删除=true 的对象
- 删除的 User 和 Email 对象!=null 将被删除。
一方面,场景 1) 忽略了 where 条件,根据领域模型,这可能是不正确的。但是在场景 2 中)如果父级被删除,并且子(电子邮件)表的连接键上有外键约束,那么删除命令将失败。发生了什么,为什么?这只是 Hibernate 的功能如何模棱两可的另一个例子吗?