[
https://issues.apache.org/jira/browse/CAY-2777?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrus Adamchik updated CAY-2777:
---------------------------------
Priority: Major (was: Minor)
> Reverse relationship is not set with single table inheritance
> -------------------------------------------------------------
>
> Key: CAY-2777
> URL: https://issues.apache.org/jira/browse/CAY-2777
> Project: Cayenne
> Issue Type: Bug
> Affects Versions: 4.2.RC1
> Reporter: Andrus Adamchik
> Priority: Major
> Fix For: 4.2
>
>
> Given the model:
> {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}
> {noformat}
> O1S1 parent = ...
> O1S2 child = ...
> // THE PROBLEM IS HERE
> // This fails to set "parents" relationship of O1S2
> parent.addToChildren(child);
> {noformat}
> The culprit seems to be "ObjRelationship.getReverseRelationship()",
> specifically this check here
> {noformat}
> for (ObjRelationship relationship : target.getRelationships()) {
> // TODO: this should be replaced with inheritance-aware code.
> // "relationship.getTargetEntity()" should be allowed to be a
> // super entity of source
> if (relationship.getTargetEntity() != source) {
> continue;
> }
> {noformat}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)