BTW, it seems my problems were caused by another code, that belonging to CAY-132. As now this is fixed on the trunk, we can proceed with that one
2009/8/17 Jeremias Maerki <[email protected]> > Thanks, Andrey. I somehow missed that. I'll see if I can allocate time > to write a test case. That could help speed things up. > > On 16.08.2009 22:01:17 Andrey Razumovsky wrote: > > Hi Jeremias, > > > > This is also known as CAY-1009: > > http://issues.apache.org/jira/browse/CAY-1009 > > > > I tried patch from there (and it looks like yours) but there WERE side > > effects (I listed them in JIRA). At the moment I was forced to make the > > relationship non-mandatory in my project (and validate in different > ways). I > > would really like to get it fixed, but I haven't found time for that > yet... > > Please watch the JIRA to be notified of the updates > > > > Regards, > > Andrey > > > > 2009/8/14 Jeremias Maerki <[email protected]> > > > > > I think I may have run into an issue that is related to this thread: > > > http://markmail.org/message/slm4joyswjp77vzi > > > > > > - I have an (abstract) entity A and two subentities/subclasses A1 and > A2. > > > - I have an (abstract) entity B with three subentities B1, B2 and B3. > > > - There is a 1:n relationship from A to B. > > > > > > Now, if I create an instance of A1 and use addToB() to add a B1 > instance, > > > B1 is added to the list. But I get a validation error because upon > > > commit the foreign key for the A1 instance is not set on the B1 > instance. > > > > > > Debugging, I found that ObjRelationship.getReverseRelationship() didn't > > > look in super entities for the reverse relationship. > > > > > > Mindlessly changing that method (in Trunk) from: > > > > > > Entity src = this.getSourceEntity(); > > > > > > Iterator<?> it = target.getRelationships().iterator(); > > > while (it.hasNext()) { > > > ObjRelationship rel = (ObjRelationship) it.next(); > > > if (rel.getTargetEntity() != src) > > > continue; > > > > > > to: > > > > > > Entity src = this.getSourceEntity(); > > > > > > Iterator<?> it = target.getRelationships().iterator(); > > > while (it.hasNext()) { > > > ObjRelationship rel = (ObjRelationship) it.next(); > > > Entity relTarget = rel.getTargetEntity(); > > > ObjEntity currentSrc = (ObjEntity)src; > > > while (currentSrc != null) { > > > if (relTarget == currentSrc) { > > > break; > > > } > > > currentSrc = currentSrc.getSuperEntity(); > > > } > > > if (src == null) { > > > continue; > > > } > > > > > > ...solves my immediate problem, but I have no idea about any > > > side-effects. Am I doing anything wrong? > > > > > > Thanks, > > > Jeremias Maerki > > > > > > > > > > > Jeremias Maerki > >
