db-jdo-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andy Jefferson (JIRA)" <j...@apache.org>
Subject [jira] Created: (JDO-669) TCK : RelationshipManyToManyAllRelationships.testDeleteFromMappedSide - problem with check
Date Fri, 19 Nov 2010 19:06:15 GMT
TCK : RelationshipManyToManyAllRelationships.testDeleteFromMappedSide - problem with check
------------------------------------------------------------------------------------------

                 Key: JDO-669
                 URL: https://issues.apache.org/jira/browse/JDO-669
             Project: JDO
          Issue Type: Bug
          Components: specification, tck
    Affects Versions: JDO 3
            Reporter: Andy Jefferson
             Fix For: JDO 3 maintenance release 1


Whilst this test passes with current DataNucleus (2.2 M3), I was in the process of extending
its support for managed relationships, and now get this test to fail which provokes this question
:-

pm.deletePersistent(proj1);
pm.flush();
deferredAssertTrue(!emp1.getProjects().contains(proj1),
    ASSERTION_FAILED + testMethod, "Postcondition is false; other side of relationship not
set on flush");

After the call to deletePersistent() and flush() the object "proj1" is in P_DELETED state.
So when the call goes in to emp1.getProjects().contains(proj) this will interrogate the hashCode()
method of Project. This is defined as

public int hashCode() {
    return (int)projid;
}

But when using datastore identity "projid" is not a primary-key field, and so, as per section
5.5.6 of the spec 
<spec>Read access to primary key fields is permitted. Any other access to persistent
fields is not supported and might throw a JDOUserException.</spec>
So what does the implementation do ?

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message