FAQ
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

Search Discussions

  • Andrey Razumovsky at Aug 16, 2009 at 8:01 pm
    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 <dev@jeremias-maerki.ch>
    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 at Aug 17, 2009 at 6:36 am
    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 <dev@jeremias-maerki.ch>
    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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupuser @
categoriescayenne
postedAug 14, '09 at 1:19p
activeAug 17, '09 at 6:36a
posts3
users2
websitecayenne.apache.org

People

Translate

site design / logo © 2022 Grokbase