You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by "Andrus Adamchik (Jira)" <ji...@apache.org> on 2022/11/17 15:21:00 UTC

[jira] [Created] (CAY-2777) Reverse relationship is not set with single table inheritance

Andrus Adamchik created CAY-2777:
------------------------------------

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


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)