Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [eclipselink-users] What is the correct wayto remove master-detail relation

Leon,

The Cascade settings on a mapping are applied when the corresponding EntityManager API is used. The Cascade.REMOVE is applied to related objects when the sources is passed to entityManager.remove and the PERSIST is applied when the source is passed to entityManager.persist (similarly for MERGE and REFRESH).

The @PrivateOwned on the other hand is applied during commit/flush based on the state of the managed entities.

Doug

-----Original Message-----
From: Leon Derks [mailto:leon.derks@xxxxxxxxxx]
Sent: Tuesday, June 03, 2008 5:34 AM
To: EclipseLink User Discussions
Subject: Re: [eclipselink-users] What is the correct wayto remove
master-detail relation


Hoi Mathias,

Thanks.

Okay, but what is missing in my ORM mapping? 
And what is then the use of cascade = REMOVE?

Leon

Mathias Walter wrote:
> Hi Lean,
>
>   
>> Why is my characteristic not removed?
>>     
>
> Because EclipseLink does not know, if the characteristic object is used by
> any other object. In theory, EclipseLink could know this, if the ORM is
> complete. But sometimes it is not complete and the object could relate to
> any other database object.
>
> Therefore you have to use the PrivateOwned annotation, as Shaun already
> posted. That would solve your problem. Keep it a try!
>
> --
> Kind regards,
> Mathias
>
>   
>> I would expect eclipselink to remove my characteristic when I do 
>> product.remove(characteristic), because of the cascade = REMOVE.
>> Do I have to do entitymanager.remove(characteristic)? And if 
>> so, why do 
>> I have to do both?
>>
>> Leon
>>
>>
>>
>> Shaun Smith wrote:
>>     
>>> Hi Leon,
>>>
>>>    In JPA, to delete an object in a collection you need to 
>>>       
>> remove it from the 
>>     
>>> collection and then call entityManager.remove(..).  
>>>       
>> EclipseLink adds support for 
>>     
>>> orphan management through a relationship defined as 
>>>       
>> "private owned".  If you 
>>     
>>> specify that a collection is private owned then removing an 
>>>       
>> element from the 
>>     
>>> collection and committing your transaction will cause it to 
>>>       
>> be deleted on the 
>>     
>>> database. 
>>>
>>>    For more info see: 
>>>
>>>       
>> http://wiki.eclipse.org/Using_EclipseLink_JPA_Extensions_(ELUG
>> )#How_to_Use_the_.40PrivateOwned_Annotation
>>     
>>>    Shaun
>>>
>>> Leon Derks wrote:
>>>       
>>>> Hi Tim,
>>>>
>>>> I already tried that, but couldn't get it working.
>>>> I will try it again.
>>>>
>>>> Thank you.
>>>> Leon
>>>>
>>>>
>>>> Tim Hollosy wrote:
>>>>         
>>>>> Leon,
>>>>> Remove it from your list directly, and as long as you have
>>>>> CascadeType.REMOVE set on your relationship it will 
>>>>>           
>> remove it from the
>>     
>>>>> database.
>>>>>
>>>>> Tim
>>>>>
>>>>> On Mon, Jun 2, 2008 at 12:02 PM, Leon Derks 
>>>>>           
>> <leon.derks@xxxxxxxxxx> wrote:
>>     
>>>>>  
>>>>>           
>>>>>> Hello
>>>>>>
>>>>>> I have the follwing Objects:
>>>>>>
>>>>>> Product {
>>>>>> List<Characteristic> characteristics;
>>>>>> List<ImageInfo>imageInfos
>>>>>> }
>>>>>>
>>>>>> Characteristic{
>>>>>> Product product;
>>>>>> }
>>>>>> ImageInfo{
>>>>>> Product product.
>>>>>> }
>>>>>>
>>>>>> But what is the best way to remove a Characteristic object?
>>>>>>
>>>>>> I prefer doing: entityManager.remove(characteristic);
>>>>>> But then the characteristic is still in the List in the 
>>>>>>             
>> Product. Why isn't
>>     
>>>>>> the entity cache automatically updated?
>>>>>> How can I clear the cache manually?
>>>>>>
>>>>>> Leon
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> eclipselink-users mailing list
>>>>>> eclipselink-users@xxxxxxxxxxx
>>>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>>>>
>>>>>>     
>>>>>>             
>>>>>
>>>>>   
>>>>>           
>>>> _______________________________________________
>>>> eclipselink-users mailing list
>>>> eclipselink-users@xxxxxxxxxxx
>>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>>         
>>> -- 
>>>
>>>
>>> Oracle <http://www.oracle.com>
>>> Shaun Smith | Principal Product Manager, TopLink | +1.905.502.3094
>>> Oracle Fusion Middleware
>>> 110 Matheson Boulevard West, Suite 100
>>> Mississauga, Ontario, Canada L5R 3P4
>>>   
>>>
>>>       
>> --------------------------------------------------------------
>> ----------
>>     
>>> _______________________________________________
>>> eclipselink-users mailing list
>>> eclipselink-users@xxxxxxxxxxx
>>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>>   
>>>       
>> _______________________________________________
>> eclipselink-users mailing list
>> eclipselink-users@xxxxxxxxxxx
>> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>>     
>
> _______________________________________________
> eclipselink-users mailing list
> eclipselink-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/eclipselink-users
>
>
>   

_______________________________________________
eclipselink-users mailing list
eclipselink-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/eclipselink-users


Back to the top