Будьте в спящем режиме отображая вопрос, где поведение неоднозначно и/или опасно. У меня есть связь "один ко многим", которая имеет условие висячей строки каскадного удаления И где условие ограничить объекты в наборе. Отображение здесь -
<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>
Теперь предположите, что это, у меня есть Пользовательский объект, который связан с одним или несколькими почтовыми объектами, по крайней мере один из которых имеет 'истинное' значение для удаленного свойства. Какой из следующих двух произойдет, когда я назову session.delete () на Пользовательском объекте?
С одной стороны, сценарий 1), игнорирует, где условие, которое не может быть корректным согласно модели предметной области. НО в сценарии 2), если родитель удален, и существует ограничение внешнего ключа на ребенка (электронная почта) ключ соединения таблицы, то удалить команда перестанет работать. Который происходит и почему? Это - просто другой пример того, как функции Hibernate могут быть неоднозначными?