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.