Hi,
                        Address address = 
person.getAddresses().iterator().next();
                        person.getAddresses().remove(address);
                        address.setPerson(null);

Generally speaking, in JPA world, nulling a relation or removing an element
from a collection do not imply that the corresponding database record is
deleted.
To delete records from database, em.remove() needs to be invoked.

However, delete-orphan behavior that your example code implies is supported
by OpenJPA with @Dependent/@ElementDependent annotation on a relation.  



JIRA [EMAIL PROTECTED] wrote:
> 
> 
>     [
> https://issues.apache.org/jira/browse/OPENJPA-692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12621390#action_12621390
> ] 
> 
> Frank Schwarz commented on OPENJPA-692:
> ---------------------------------------
> 
> I tried the mapping as specified in the description field of this case.
> 
> It works with current trunk (revision 684688/1.3.0-SNAPSHOT). Schema, SQL
> statements and runtime behavior are OK with one exception:
> 
> Dissolving relationship, e.g.:
>                       Address address = 
> person.getAddresses().iterator().next();
>                       person.getAddresses().remove(address);
>                       address.setPerson(null);
> 
> leads to UPDATE PERSON_ADDRESS SET PERSON_SSN = ? WHERE ADDRESS_PHONE = ?
> [params=(null) null, (long) 3]
> Actually it has to be DELETE FROM PERSON_ADDRESS WHERE ADDRESS_PHONE = ?
> [params=(long) 3]. Otherwise the join-table will get filled with
> meaningless <NULL, ADDRESS_PHONE> tupels
> 
> 
>> Bi-directional One-to-Many mapping with a JoinTable fails for Update or
>> Delete operation
>> ----------------------------------------------------------------------------------------
>>
>>                 Key: OPENJPA-692
>>                 URL: https://issues.apache.org/jira/browse/OPENJPA-692
>>             Project: OpenJPA
>>          Issue Type: Bug
>>            Reporter: Pinaki Poddar
>>            Assignee: Pinaki Poddar
>>             Fix For: 1.3.0
>>
>>
>> Originally reported in user group message [1] by Frank Schwarz 
>> If
>> a) Entities A and B that are related in a one-to-many and many-to-one
>> bi-directional relation (typical Parent-Child pattern)
>> b) mapped using a JoinTable instead of conventional mappedBy 
>> then
>> update/delete operation fails with OptimisticException (which itself is a
>> catch-all and sometimes misleading). 
>> Typical mapping that encounters this error:
>> public class Person {
>>      @Id
>>      private long ssn;
>>      
>>      @OneToMany(cascade=CascadeType.ALL)
>>      @JoinTable(name="J_PERSON_ADDRESSES",
>>                      joinColumns               = 
>> @JoinColumn(name="PERSON_SSN",   
>> referencedColumnName="SSN"),
>>                      inverseJoinColumns = @JoinColumn(name="ADDRESS_PHONE",
>> referencedColumnName="PHONE"))
>>     private Set<Address> addresses = new HashSet<Address>();
>> public class Address {
>>    @Id
>>    private String phone;
>>      
>>     @ManyToOne
>>     @JoinColumn(table="J_PERSON_ADDRESSES", referencedColumnName="SSN")
>>     private Person person;
>> [1]
>> http://n2.nabble.com/bidirectional-one-to-many-relationship-with-join-table-tc678479.html
> 
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
> 
> 
> 

-- 
View this message in context: 
http://n2.nabble.com/-jira--Created%3A-%28OPENJPA-692%29-Bi-directional-One-to-Many-mapping-with-a-JoinTable-fails-for-Update-or-Delete-operation-tp683188p685628.html
Sent from the OpenJPA Developers mailing list archive at Nabble.com.

Reply via email to