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

Andrus Adamchik closed CAY-901.
-------------------------------

    Resolution: Fixed

fixed on 3.0M2 tag and trunk. Thanks Kevin for digging to the core of the 
issue, so the fix only took 5 minutes for me

> Cannot set more than one to-one relationship to null.
> -----------------------------------------------------
>
>                 Key: CAY-901
>                 URL: https://issues.apache.org/cayenne/browse/CAY-901
>             Project: Cayenne
>          Issue Type: Bug
>          Components: Cayenne Core Library
>    Affects Versions: 3.0
>            Reporter: Kevin Menard
>            Assignee: Andrus Adamchik
>             Fix For: 3.0
>
>
> Given three entities Person, Place, Thing.  Person has a to-one relationship 
> to Place.  Person has a to-one relationship to Thing.  Calling the following 
> code does not work:
> person.setPlace(null);
> person.setThing(null);
> person.getObjectContext().commitChanges();
> The place will be set to null, but the thing will not.  The problem appears 
> to be in DataDomainDBDiffBuilder#arcDeleted().  There, if the currentArcDiff 
> is null, a new one is created and the arc deletion noted.  If the 
> currentArcDiff is not null, however, an arc deletion will only be added if 
> the arcId has already been added to the map.  In the case of the setThing() 
> call, the currentArcDiff will not be null, containing the place deletion, but 
> there will be no entry for the thing deletion.  The thing deletion will not 
> be added because of the blocking condition.
> It appears that either the condition needs to be removed or refined to 
> account for such a situation.  Given that I'm not clear on what the original 
> intent was, it's hard to recommend a clear solution.  Removing the condition 
> fixed the problem in my codebase.

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

Reply via email to