Here's the rest of the stack.
2016-03-03,09:05:44:433,ERROR,[Thread-15],,'com.callistacti.vaadinLib.IWindowEditBase'
ERROR:ObservableComponent Error processing observer's update code.
Observer==>class
com.itsurcom.bluecranex.GUI.Panels.PanelProjectContacts::org.apache.cayenne.CayenneRuntimeException:
[v.4.0.M3 Feb 08 2016 17:09:41] No object is registered in context with
Id <ObjectId:Contact, ContactID=1922>
at
org.apache.cayenne.access.ObjectStore.registerDiff(ObjectStore.java:162)
at
org.apache.cayenne.access.ObjectStore.arcCreated(ObjectStore.java:974)
at
org.apache.cayenne.util.ObjectContextGraphAction.handleArcPropertyChange(ObjectContextGraphAction.java:88)
at
org.apache.cayenne.util.ObjectContextGraphAction.handlePropertyChange(ObjectContextGraphAction.java:65)
at org.apache.cayenne.BaseContext.propertyChanged(BaseContext.java:460)
at
org.apache.cayenne.CayenneDataObject.addToManyTarget(CayenneDataObject.java:248)
at
org.apache.cayenne.CayenneDataObject.setReverseRelationship(CayenneDataObject.java:417)
at
org.apache.cayenne.CayenneDataObject.setToOneTarget(CayenneDataObject.java:372)
at
com.itsurcom.bluecranex.database.auto._ProjectContact.setContact(_ProjectContact.java:44)
The reason I was setting all the objects to use the same ObjectContext
was that the objects themselves are setup in multiple threads and I was
getting ObjectContext errors.
Here is the error I was trying to get around.
2016-03-03,09:12:20:135,ERROR,[Thread-25],,'com.callistacti.vaadinLib.IWindowEditBase'
ERROR:ObservableComponent Error processing observer's update code.
Observer==>class
com.itsurcom.bluecranex.GUI.Panels.PanelProjectContacts::org.apache.cayenne.CayenneRuntimeException:
[v.4.0.M3 Feb 08 2016 17:09:41] Cannot set object as destination of
relationship contact 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.itsurcom.bluecranex.database.auto._ProjectContact.setContact(_ProjectContact.java:44)
Using this code...
ObjectContext oc = UI.getObjectContext();
int addItemCount = 0;
for (Contact item : list) {
ProjectContact newItem =
oc.newObject(ProjectContact.class);
//project.setObjectContext(oc);
//project.getCompany().setObjectContext(oc);
newItem.setCompany(project.getCompany());
//item.setObjectContext(oc);
exception-->newItem.setContact(item);
newItem.setProject(project);
newItem.setPrimeContact(ProjectContact.Type.NON_PRIME.getCode());
addItemCount++;
}
oc.commitChanges();
On 03/03/16 06:32 AM, Andrus Adamchik wrote:
Hi Andrew,
You don't show the relevant stack, so I can only guess. But I find the
following code suspect:
project.setObjectContext(oc);
project.getCompany().setObjectContext(oc);
Setting ObjectContext explicitly on Persistent objects is never a good idea.
Object should stay in the ObjectContext it was created in or fetched from). Any
specific reason why you are doing that?
Andrus
On Mar 3, 2016, at 6:15 AM, Andrew Willerding <[email protected]> wrote:
I am stuck on exactly what this message means and how to correct the situation.
Here are my table relationships.
Project ProjectContact Contact
--------- -------------------- ----------
ProjectID <---> ProjectID
ContactID <---> ContactID
Here is my code.
ObjectContext oc = UI.getObjectContext();
for (Contact item : list) {
ProjectContact newItem = oc.newObject(ProjectContact.class);
project.setObjectContext(oc);
project.getCompany().setObjectContext(oc);
newItem.setCompany(project.getCompany());
item.setObjectContext(oc);
exception->newItem.setContact(item);
newItem.setProject(project);
newItem.setPrimeContact(ProjectContact.Type.NON_PRIME.getCode());
addItemCount++;
Here's the exception that is thrown when the newItem.setContact(item) is
executed.
2016-03-02,22:00:25:587,ERROR,[Thread-83],,'com.callistacti.vaadinLib.IWindowEditBase'
ERROR:ObservableComponent Error processing observer's update code. Observer==>class
com.itsurcom.bluecranex.GUI.Panels.PanelProjectContacts::org.apache.cayenne.CayenneRuntimeException:
[v.4.0.M3 Feb 08 2016 17:09:41] No object is registered in context with Id
<ObjectId:Contact, ContactID=1170>