2016-09-18 4 views
0

В моем коде есть два объекта, которые участвуют в отношениях «много-к-одному». Проблема заключается в том, когда я пытаюсь удалить родитель он говорит:Нарушение NHibernate с нарушением проблемы

ORA-02292: ограничение целостности нарушается - ребенок запись найден

Как вы можете видеть ниже есть Безопасность пользователя сущность параметра в моем проект, который может иметь связанные дочерние элементы, называемые исключительными параметрами безопасности пользователя. Я ожидаю, что ORM удалить найденные дочерние записи, когда он хочет, чтобы устранить их родителей

<bag name="ExeptionalUserSecurityParameters" inverse="true" lazy="false" access="property" cascade="none" batch-size="256"> 
     <key> 
     <column name="Key" /> 
     </key> 
     <one-to-many class="ExeptionalUserSecurityParameter"/> 
    </bag> 

<many-to-one name="UserSecurityParameter" cascade="all-delete-orphan" fetch="join" 
     class="UserSecurityParameters" > 
    <column name="Key" /> 
</many-to-one> 

Как я могу избежать этой проблемы?

ответ

1

Почти всегда (ну всегда) я использовать каскадное как это:

//<bag name="ExeptionalUserSecurityParameters" cascade="none" ... 
<bag name="ExeptionalUserSecurityParameters" cascade="all-delete-orphan" ... 

//<many-to-one name="UserSecurityParameter" cascade="all-delete-orphan" 
<many-to-one name="UserSecurityParameter" cascade="none" 

, которые должны решить эту проблему. Если владелец коллекции удален, кто когда-либо ссылается на него, также удаляется. Но не наоборот

Смежные вопросы