I guess my issue is with how independent the commits can be. Now that I
better understand this, my code example works as Nikita suggested (with
the fix for my problem with the PrimaryKey table) and if I drop the
commit during the creation of the child object otherwise the commit
during the child creation will fail because the parent has not yet been
assigned with the child object.
My objective is that I want the creation of the child to be completely
independent of the parent object for this situation. To do this I have
to create a new ObjectContext for the child object to make it
independent of the parent's ObjectContext but when I return the newly
created child object to the parent object I get the following
Caused by: org.apache.cayenne.CayenneRuntimeException: [v.4.0.B1 Jun 02
2017 15:11:18] Cannot set object as destination of relationship
communicationType because it is in a different ObjectContext
at
org.apache.cayenne.CayenneDataObject.willConnect(CayenneDataObject.java:399)
at
org.apache.cayenne.CayenneDataObject.setToOneTarget(CayenneDataObject.java:355)
at
com.callistacti.clientbase.Database.auto._CommunicationLog.setCommunicationType(_CommunicationLog.java:65)
at
com.callistacti.clientbase.Panel.PanelGroups.windowClose(PanelGroups.java:423)
So what I then needed to do is lookup the child object with the same
ObjectContext that the parent was using.
Out of curiousity, is there any simpler way of doing this?
On 19/09/17 09:16 AM, Aristedes Maniatis wrote:
On 19/9/17 11:01PM, Andrew Willerding wrote:
The CommunicationType object does not yet exist permanently in the database table so how
or when does it generate the primary key for the object to be referenced by another
object before it is committed? I was hoping to not have to worry about this as a
"high-level" user of Cayenne.
You are right, you don't need to worry about all that. Just create one context
and save it at the end. Cayenne tracks the relationships between objects with a
temporary key internally, but you don't need to think about that. Once Caynenne
commits, everything is assigned proper primary keys and joined.
Ari