missing reverse relationship causes NPE

From: Dirk Olmes (dirk.olme..mx.de)
Date: Fri Nov 08 2002 - 10:02:09 EST

  • Next message: Andrus Adamchik: "Unit Tests switched to ant"

    Hi,

    while playing around with reflexive relationships I encountered a strange
    NullPointerException:

    java.lang.NullPointerException
            at
    org.objectstyle.cayenne.QueryHelper.selectRelationshipObjects(QueryHelper.java:280)
            at
    org.objectstyle.cayenne.access.util.RelationshipDataSource.updateListData(RelationshipDataSource.java:86)
            at
    org.objectstyle.cayenne.access.ToManyList.getObjectList(ToManyList.java:113)
            at org.objectstyle.cayenne.access.ToManyList.iterator(ToManyList.java:187)
            at bm.MissingBackRelationship.main(MissingBackRelationship.java:33)

    The same bug shows up in normal relationships as well.

    A closer look into the source reveals that
    DBRelationship::getReverseRelationship() is indeed
    allowed to return null. The code in QueryHelper however does not check the
    return value but
    happily calls srcFkSnapshotWithTargetSnapshot().

    The workaround would be to model the reverse relationshpip in the
    DBEntity.... I wonder
    however if there is a reason for requiring both relationships to be present:
    in EOF
    this could cause the most infamous "add to to-many relationship" bug.

    Could this effect also show up in Cayenne?

    A possible better implementation could be to not rely on the reverse
    relationship to be present
    but simply create a temporary relationship and use that for resolving the
    to-many....

    -dirk

    -- 
    +++ GMX - Mail, Messaging & more  http://www.gmx.net +++
    NEU: Mit GMX ins Internet. Rund um die Uhr für 1 ct/ Min. surfen!
    



    This archive was generated by hypermail 2.0.0 : Fri Nov 08 2002 - 10:02:45 EST