Return-Path: X-Original-To: apmail-cayenne-user-archive@www.apache.org Delivered-To: apmail-cayenne-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id D318C185C1 for ; Thu, 3 Mar 2016 20:37:55 +0000 (UTC) Received: (qmail 58644 invoked by uid 500); 3 Mar 2016 20:37:55 -0000 Delivered-To: apmail-cayenne-user-archive@cayenne.apache.org Received: (qmail 58615 invoked by uid 500); 3 Mar 2016 20:37:55 -0000 Mailing-List: contact user-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cayenne.apache.org Delivered-To: mailing list user@cayenne.apache.org Received: (qmail 58604 invoked by uid 99); 3 Mar 2016 20:37:55 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd2-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 03 Mar 2016 20:37:55 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd2-us-west.apache.org (ASF Mail Server at spamd2-us-west.apache.org) with ESMTP id DBAE61A1347 for ; Thu, 3 Mar 2016 20:37:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd2-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: 0.979 X-Spam-Level: X-Spam-Status: No, score=0.979 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd2-us-west.apache.org [10.40.0.9]) (amavisd-new, port 10024) with ESMTP id b1Hsk7PU-7hR for ; Thu, 3 Mar 2016 20:37:51 +0000 (UTC) Received: from mout.perfora.net (mout.perfora.net [74.208.4.194]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTPS id 2E3E35F56E for ; Thu, 3 Mar 2016 20:37:51 +0000 (UTC) Received: from [192.168.2.146] ([173.246.71.178]) by mrelay.perfora.net (mreueus002) with ESMTPSA (Nemesis) id 0MCrG1-1alAn73t9n-009g4F for ; Thu, 03 Mar 2016 21:37:43 +0100 Subject: Re: No object is registered in context with Id To: user@cayenne.apache.org References: <56D7AC5E.4050206@itsurcom.com> <56D84737.3090804@itsurcom.com> From: Andrew Willerding Message-ID: <56D8A095.8060102@itsurcom.com> Date: Thu, 3 Mar 2016 15:37:41 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Provags-ID: V03:K0:2g92JfYKSaBYALFcfekv4reeh2lSd0yHlFzflPnKagb9aoM0uWf mK+81nBzp76A9OfcrqSAsUoFinv4VFPAXASSEwSzVPE4tdTalMpJBM3yR4UfpKf2UE+edio TehC7+7ck1AsQ/7Bp5BYUyOwv21PsqENVcGfd29wdmaZ3eAzUz9ZZ+9EN6mXdv2aCRShB5N Rbs9360gRPRxRxT8NPcmA== X-UI-Out-Filterresults: notjunk:1;V01:K0:pVQxSHGmerE=:GPVTb8tHg8i8rzggs3ZCdh eLl4ms/FQolYEz/cJ6Rn3T6kOL+0AqQSmkKpivWqHEgZDWktkh+waP5jvexOlBjdlz23bYej7 qMR2gNJzgpJK5kfQD0Fr0MRbqcmoHMLJycKyo9nMgyEbNJLu6sXKNLqugTLPBnGc3IzsBvddL eBCDrnJhNJmFId2xCEM0+cmETvUistEp6uL+zKULfb2RxCeURJUnXP4qYheWpWqTYyKyaQ7y7 wSgHqFwjaxHYTLb5LSwWOqBUVVM9IsxOPhpunKh2ReQ9FFmMyakDtja/hVYkT4pSCrUL1oWxA dwjJ4PzNhraabfoWfXN7GLIiU1YxJTzbYfxCRSBEIdrtn1JYuVaDKm+UAZAbAhaFBV9bLT5R1 iXj1Jo2bLWrFR8vkH3nXh0qIEVOUZoe5yeu4N6vUkhHaXliKqKJmZLRZTj33guP07J7ZkeX0l obpEJDdBo9RzYCIzXob4Tn1ySFL+LA+YLJSOAumfrZGULieWKAgeuuxezvojfVQYukH2HXZu/ 79CnGjx5w3ykfdsllvlzpumIZfppBuTtZ6BdOK7YwZGW3NJbDKEAWUbocjuwavfX/i4OmtuBV UdgTY31Qrj4TJqyra7iNMTSKlVU2OVwJYgSgt0AOxAf/Bjnia4bFPQJ5EK/Gqo/tra0ZX5a8Q DU13+XkABzb5SdBfRjDsCwYz7HlZfSYYJ+7s8B1FnG7TfHM1a3QfLL3SPvERJXlbtX5X3xHr6 Ohuf35j7X7OFRvFw I had to add newItem before the getObjectContext() to allow the program to compile and then unfortunately I'm getting the error below. There shouldn't be any duplicate entries as this is the first record I'm attempting to insert for this particular project and contact. The underlying project id is 9999 and the contact id is 1922 so I'm not sure what is generating the duplicate entry. used by: java.sql.BatchUpdateException: Duplicate entry '2-9999-1922-1' for key 'U_ProjectContact' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1160) at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1773) at com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1257) at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:959) at org.apache.cayenne.access.jdbc.BatchAction.runAsBatch(BatchAction.java:125) at org.apache.cayenne.access.jdbc.BatchAction.performAction(BatchAction.java:90) at org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:97) at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:306) at org.apache.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java:234) at org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:155) at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:629) at org.apache.cayenne.access.DataDomain.onSyncNoFilters(DataDomain.java:598) at org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:746) at org.apache.cayenne.tx.TransactionFilter$1.perform(TransactionFilter.java:73) at org.apache.cayenne.tx.TransactionFilter$1.perform(TransactionFilter.java:70) at org.apache.cayenne.tx.DefaultTransactionManager.performInTransaction(DefaultTransactionManager.java:53) at org.apache.cayenne.tx.TransactionFilter.onSync(TransactionFilter.java:70) at org.apache.cayenne.access.DataDomain$DataDomainSyncFilterChain.onSync(DataDomain.java:746) at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:585) at org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:744) ... 4 more Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '2-9999-1922-1' for key 'U_ProjectContact' at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:934) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2617) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2550) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1751) ... 22 more On 03/03/16 11:50 AM, dollj@xsinet.co.za wrote: > Change the line that throws the exception --> newItem.setContact(item); > to: newItem.setContact( getObjectContext().localObject( item ) ); > > > -----Original Message----- From: Andrew Willerding > Sent: Thursday, March 3, 2016 4:16 PM > To: user@cayenne.apache.org > Subject: Re: No object is registered in context with Id > > 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 > 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 >>> 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 >>> >