[ https://issues.apache.org/jira/browse/OPENJPA-693?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pinaki Poddar reassigned OPENJPA-693:
-------------------------------------
Assignee: Pinaki Poddar
> Can not persist Parent-Child mapping when child refers to parent via parent's primary
identity (and not parent's object reference) and parent uses database sequence for its own
identity
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: OPENJPA-693
> URL: https://issues.apache.org/jira/browse/OPENJPA-693
> Project: OpenJPA
> Issue Type: Bug
> Reporter: Pinaki Poddar
> Assignee: Pinaki Poddar
>
> The following use case is reported in the users' group [1].
> A typical Parent-Child (Address has many Phones) relationship. But Phone refers to Address
by its primary key. And database assigns the primary key of the Address.
> When and how to set the child's reference field to its parent?
> Approach A:
> 1. Remove all children from Parent, but remember them
> 2. flush() the Parent.
> 3. Database will now assign identity to Parent
> 4. Add the children back and set each child's identifier to the newly assigned identifier
of the Parent
> 5. commit
> The other approach B which is cleaner
> 1. Add a @PostPersist method to Parent.java as follows
> @PostPersist
> public void postPersist() {
> if (children== null) return;
> for (Child child : children)
> parent.setParentId(this.getId());
> }
> 2. commit()
> Unfortunately Approach B does not work as expected with existing OpenJPA because it prohibits
Phone.addressId value to be reassigned during a flush cycle as resulted from Address.postPersist()
method.
> I have added a fix to relax that prohibition under some circumstances but I am concerned
whether this relaxing of restriction will now allow other truly invalid use cases those the
original restriction was duly imposing.
> The fix passes the OpenJPA test corpus -- but that is also not proof enough of its robustness.
> Comments/thoughts?
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.