[ https://issues.apache.org/jira/browse/CAY-2779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Nikita Timofeev reassigned CAY-2779: ------------------------------------ Assignee: Nikita Timofeev > "Nullify" delete rules is not processed with n:m and inheritance hierarchy > -------------------------------------------------------------------------- > > Key: CAY-2779 > URL: https://issues.apache.org/jira/browse/CAY-2779 > Project: Cayenne > Issue Type: Bug > Affects Versions: 4.2.RC1 > Reporter: Andrus Adamchik > Assignee: Nikita Timofeev > Priority: Major > Fix For: 4.2 > > > A model the same as the one in CAY-2777: > {noformat} > // a table with a many to many to self > T1: id, type > T11: child_id, parent_id; > // Base ObjEntity > O1: > - flat rel "parents" mapped as "db:parents.parent" > // Sub ObjEntity 1 > O1S1: > - flat rel "children" mapped as "db:children.child" > // Sub ObjEntity 2 > O1S2: > {noformat} > n:m has "Nullify" delete rule on both ends. When deleting a child, the child > is not removed from parent's children, because the code gets confused about > the inheritance hierarchy. Specifically here inside > ObjectContextDeleteAction, "reverseArc" is null, whereas it should be > "O1S1.children" : > {noformat} > case DeleteRule.NULLIFY: > ArcProperty reverseArc = property.getComplimentaryReverseArc(); > if (reverseArc == null) { > // nothing we can do here > break; > } > {noformat} > Oddly enough, it still generated a correct DB operation, deleting the join > table record, because of the hardcoded flattened relationship processing > block just a few lines prior the one mentioned above. > These two things are still incorrect: > * Parent object still has a child in its collection > * "nodeRemoved" graph operation is not recorded, so any listener flows that > depend on it do not work. -- This message was sent by Atlassian Jira (v8.20.10#820010)