Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [eclipselink-users] merge with bidirectional relationship

Hi,

I have now tried to specify CascadeType.MERGE on both sides of the relationship and I still have the same issue.

Regards,
   Constantino

________________________________
From: Cronemberger, Constantino
Sent: 30 June 2011 13:09
To: eclipselink-users@xxxxxxxxxxx
Subject: merge with bidirectional relationship


Hi,



I am dealing with the following issue that I don't know if it is a bug or if JPA spec does not say anything about this scenario, in which case, it is going to be implementation specific.



One important thing: I am using annotations in attributes, so EclipseLink will not use getters and/or setters, only the application code.



I have a bidirectional relationship between A and B where B has a set of As and A has only one B. In this case the owning side is A.



I create an instance of A and B and assign B to A. I also add A to B collection of As.



Then in a new transaction, I get a detached B, call setAs(null) on B and try to call em.merge(B).



The result is that B has an empty collection of As, but A still points to B.



I remember that in JPA spec they say that the developer is responsible for keeping the synchronization of bidirectional relationships, but I was considering this would be valid only when the developer is doing an operation in the relationship.



In this case I think EclipseLink is doing the change, so my guess is that EclipseLink should also update the other side of the relationship.



Any ideas on how I can fix this? My simplest and easiest idea is to just not use merge anymore. A more complex idea would be to save the relationships before EclipseLink merges the entity and then merge the relationships manually to make sure they are in sync.



Thanks,

   Constantino






Back to the top