[ 
https://issues.apache.org/jira/browse/JDO-669?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andy Jefferson closed JDO-669.
------------------------------

> TCK : RelationshipManyToManyAllRelationships.testDeleteFromMappedSide - 
> problem with check
> ------------------------------------------------------------------------------------------
>
>                 Key: JDO-669
>                 URL: https://issues.apache.org/jira/browse/JDO-669
>             Project: JDO
>          Issue Type: Bug
>          Components: tck
>    Affects Versions: JDO 3 (3.0)
>            Reporter: Andy Jefferson
>            Assignee: Craig L Russell
>             Fix For: JDO 3.1-rc1
>
>         Attachments: jdo-669.patch
>
>
> 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 was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to