[
https://issues.apache.org/cayenne/browse/CAY-1008?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12896#action_12896
]
Robert Zeigler commented on CAY-1008:
-------------------------------------
I think you're right that "limitation" is right word. From a "naive user"
perspective, however, it "feels like" a bug, since object-graph consistency is
nicely handled, and then you add that second object relationship, and, hey, my
object graph isn't consistent anymore.
Depending on my time, I may take a shot at patching this. We'll see.
> Reverse relationships may not be correctly set if inheritance is used.
> ----------------------------------------------------------------------
>
> Key: CAY-1008
> URL: https://issues.apache.org/cayenne/browse/CAY-1008
> Project: Cayenne
> Issue Type: Bug
> Components: Cayenne Core Library
> Affects Versions: 3.0
> Reporter: Kevin Menard
> Assignee: Andrus Adamchik
>
> Given two entities, Employee and Address, such that there is a one-to-many
> relationship between the two, it may be possible that reverse relationships
> are not fully set if inheritance is used.
> For example, let's say that HomeAddress extends Address, then the following
> fails:
> Employee e = context.newObject(Employee.class);
> Address a = context.newObject(Address.class);
> a.setToEmployee(e);
> assertEquals(1, e.getAddresses().size());
> assertEquals(0, e.getHomeAddresses().size());
> HomeAddress ha = context.newObject(HomeAddress.class);
> ha.setToEmployee(e);
> assertEquals(2, e.getAddresses().size());
> assertEquals(1, e.getHomeAddresses().size());
> The last assertion fails as e.getHomeAddresses() will return an empty list.
> On the face of it, the problem is that the ObjRel "addresses" is being set
> rather than "homeAddresses". This is due to how
> ObjRelationship#getReverseRelationship() determines reverse relationships.
> It does so by inspecting the relationship structure and if there's a match,
> returns it. "addresses" and "homeAddresses" have the same structure and
> "addresses" is the first match found and returned.
> Simply reversing order or other similar tricks won't really do anything more
> for us though. The real issue seems to be how to deal with multiple ObjRels
> that match to the same DbRel. Each ObjRel does need to be updated in order
> for the graph to remain consistent.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.