2016-09-18 1 views
0

Deux entités de mon code participent à une relation plusieurs-à-un. Le problème est quand je tente de supprimer le parent, il dit:Problème de violation de la contrainte NHibernate

ORA-02292: contrainte d'intégrité violée - record enfant trouvé

Comme vous pouvez le voir ci-dessous il y a une entité paramètre de sécurité de l'utilisateur dans mon projet qui peut avoir des enfants liés appelés paramètres de sécurité d'utilisateur exceptionnel. Je pense que le ORM pour supprimer les enregistrements enfants trouvés quand il veut éliminer leurs parents

<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> 

Comment puis-je éviter ce problème?

Répondre

1

Presque toujours (bien, toujours) J'utilise en cascade comme ceci:

//<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" 

qui devrait résoudre le problème. Si le propriétaire de la collection est supprimé, il est également supprimé. Mais pas vice versa