Suppression impossible d'un record (pattern d'objet principal) lié en 1-1 à un autre record (pattern sous-objet) incorporé

Bonjour,

j’ai le cas d’un objet métier lié à un autre en 1-1 (attributs incorporés) avec l’option de suppression cascade dans le relation.

Lorsque j’essaye de supprimer le record principal référencé par l’autre, le runtime produit une erreur “Suppression limitée pour : xxx (1)”:
image

En supprimant manuellement le record référençant en base, je peux supprimer le record référencé via la UI.

Rencontré en 5.1.28… Je n’ai pas testé sur la 5.2.0-beta mais si besoin je peux créer le cas de tests…

Ca ne me semble pas une anomalie => une cardinalité 1,1 n’est pas une cardinalité 0,1.

Peux tu retester avec 0,1 ?

Ca ne me semble pas une anomalie => une cardinalité 1,1 n’est pas une cardinalité 0,1.

Peux tu retester avec 0,1 ?

EDIT j’ai lu un peu vite… effectivement ça ne devrait pas bloquer dans le cas d’une suppression cascade. Je laisse @Francois répondre sur ce point.

Il y a visiblement un problème dans le delete cascade d’une relation de cardinalité N,M quand N>0.
Je ne vois pas de rapport avec le display inline ou en liste du panel en front.

C’est plus lié au paramètre DELETE_CHILD_HOOK=yes par défaut depuis la V3…
qui supprime récursivement en profondeur les enfants d’abord (et passe par les hooks contrairement à une vieille version V2 qui faisait juste un delete en masse des enfants) et qui applique à tord la règle de cardinalité minimale rarement à 1.

On va corriger.

Voilà ce sera livré au prochain build 5.1.29. Pas simple, car il fallait bien appliquer la règle sur d’éventuels liens 1,n venant d’autre relations, et autoriser uniquement ceux en lien cascade direct avec celui qui est supprimé.

Typiquement si l’objet supprimé en cascade est lui même requis dans une autre relation, cela restera bloquant. Cas encore plus rare à priori mais qui sera désormais géré.

(Sur le libellé “Dp id”, il faudrait penser à mieux traduire l’attribut foreignkey car il peut servir à d’autre endroit)

1 Like