[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [eclipselink-users] What is the correct way to remove master-detail relation
|
Hello
I don't understand how this all is managed by eclipselink.
When I do product.add(characteristic), the characteristic is inserted
into the database. Everything works as I expected.
When I do product.remove(characteristic), the characteristic is not
removed from the database. Why not??
This is the mapping:
@OneToMany(mappedBy = "catalogProduct", cascade = { PERSIST, MERGE,
REMOVE })
private List<Characteristic> characteristics = new
ArrayList<Characteristic>();
Why is my characteristic not removed?
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