[ 
https://issues.apache.org/jira/browse/OPENJPA-1966?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13214596#comment-13214596
 ] 

Vermeulen edited comment on OPENJPA-1966 at 2/23/12 12:47 PM:
--------------------------------------------------------------

We are experiencing exactly this problem with all our cascading relations of 
the form A <- OneToMany -> B. We prefer using detached entities without a state 
manager because we have a client-server system where the client may 
insert/update entities with a remote method call to the server.
What we get on merging A is A' -> B'_i, with B'_i -> A. 
An easy workaround for us is to manually set the reference from each B'_i  to 
A' after detaching.
However it would be very nice if this bug is fixed because this is easy to 
forget when working with a new entity.
                
      was (Author: slowstrider):
    We are experiencing exactly this problem with all our cascading relations 
of the form A <- OneToMany -> B. We prefer using detached entities without a 
state manager because we have a client-server system where the client may 
insert/update entities through the server.
What we get on merging A is A' -> B'_i, with B'_i -> A. 
An easy workaround for us is to manually set the reference from each B'_i  to 
A' after detaching.
However it would be very nice if this bug is fixed because this is easy to 
forget when working with a new entity.
                  
> Entity graphs containing bi-directional references may not merge correctly if 
> an entity does not contain a state manager
> ------------------------------------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-1966
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-1966
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 1.0.4, 1.2.2, 2.0.1, 2.1.0
>            Reporter: Jeremy Bauer
>            Assignee: Jeremy Bauer
>         Attachments: OPENJPA-1966.patch, OPENJPA-1966.patch
>
>
> An entity graph (with cascade) containing bi-directional relationships or 
> circular references may fail to merge properly if one or more of the entities 
> in the graph do not have a state manager - either an active or detached state 
> manager.  The result is that one or more of the merged entities may end up 
> with a reference to a detached object.  This may not be immediately evident 
> and could cause problems in subsequent operations. It can even affect the 
> ordering of SQL statements since foreign keys may not be properly associated 
> with the detached entities.
> For example:  A <- OneToOne -> B
> em.clear()
> Detached graph:  B <--> A
> A: Is detached, has DetachedStateManager
> B: Is detached, No state manager, only detached state field.  (ie. 
> @DetachedState Object state)
> Merge: B
> After merge:  B' --> A' --> B (detached)
> If B contains a state manager the result of the merge is correct: B' <--> A'
> The source of the problem is that the "no state manager" attachment path 
> creates a new PC + state manager and assigns this state manager to the 
> detached instance so that it can be used to attach all its fields.  During a 
> cascade, this detached entity (with borrowed state manager) looks persistent, 
> so it can get attached into the resulting merge graph.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to