RE: Help in store function call in PersistenceBroker
That's true. I've a table with reference-descriptor tag with one key FK pointing to another table that is define with 2 primary key. When PB attempt to store the parent, it's try to create a Identity object that is looking for 2 keys which it's only passing in value. That's when it's trying a exception. -Original Message- From: Edson Carlos Ericksson Richter [mailto:[EMAIL PROTECTED] Sent: Wednesday, July 09, 2003 6:59 PM To: OJB Users List Subject: Re: Help in store function call in PersistenceBroker The more precise check is if if( ojbFkFields.lenght > refPkValues.lenght ) throw new PersistenceBrokerException("The number of fields in foreign key is greater than the number of fields in primary key (" + realObj.getClass().getName() + ")"); Just m2c, Edson Richter - Original Message - From: "Edson Carlos Ericksson Richter" <[EMAIL PROTECTED]> To: "OJB Users List" <[EMAIL PROTECTED]> Sent: Wednesday, July 09, 2003 7:47 AM Subject: Re: Help in store function call in PersistenceBroker I had this (exactly) stack trace when I made some reference (foreign key) with two fields mapping for a table that has only one field in primary key. I think OJB must check if fkfields[].length == pkfield[].lenght, and throw a better explanatory exception. The code in PersistenceBrokerImpl should be similar to // MBAIRD: we have 'disassociated' this object from the referenced object, // the object representing the ord is now null, so set the fk to null. if (ref == null) { refPkValues = new Object[objFkFields.length]; } else { // BRJ: ref may be Proxy Class refClass = ProxyHelper.getRealClass(ref); ClassDescriptor refCld = descriptorRepository.getDescriptorFor(refClass); refPkValues = brokerHelper.getKeyValues(refCld, ref, false); } if( ojbFkFields.lenght != refPkValues.lenght ) throw new PersistenceBrokerException("The number of fields in foreign key doesn't match the number of fields in primary key (" + realObj.getClass().getName() + ")"); for (int i = 0; i < objFkFields.length; i++) { objFkFields[i].getPersistentField().set(realObj, refPkValues[i]); } Jakob, Armin, Thomas can someone confirm this? Edson Richter - Original Message - From: "Chiah Tong Kiat" <[EMAIL PROTECTED]> To: "OJB Users List" <[EMAIL PROTECTED]> Sent: Tuesday, July 08, 2003 11:38 PM Subject: Help in store function call in PersistenceBroker Hi I'm having some problem when I attempt to store the database. It's throwing the stack trace following stack trace com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:424) 2003-07-0 9 02:03:00,843 ERROR [ExecuteThread: '8' for queue: 'default'] jp.JPShipmentImpl (JPShipmentImpl.java:424) - org.apache.ojb.broker.PersistenceBrokerException: C ould not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.Array IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:263) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(Persiste nceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(Persiste nceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBroker Impl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersi stenceBroker.java:158) at com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:370) at com.fedex.cih.ejb.ShipmentBean.setMDEDetails(ShipmentBean.java:159) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl.setMDEDetails(ShipmentBean_6ssy 2e_EOImpl.java:202) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManage r.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3 0) at weblogic.kernel.Exe
Re: Help in store function call in PersistenceBroker
The more precise check is if if( ojbFkFields.lenght > refPkValues.lenght ) throw new PersistenceBrokerException("The number of fields in foreign key is greater than the number of fields in primary key (" + realObj.getClass().getName() + ")"); Just m2c, Edson Richter - Original Message - From: "Edson Carlos Ericksson Richter" <[EMAIL PROTECTED]> To: "OJB Users List" <[EMAIL PROTECTED]> Sent: Wednesday, July 09, 2003 7:47 AM Subject: Re: Help in store function call in PersistenceBroker I had this (exactly) stack trace when I made some reference (foreign key) with two fields mapping for a table that has only one field in primary key. I think OJB must check if fkfields[].length == pkfield[].lenght, and throw a better explanatory exception. The code in PersistenceBrokerImpl should be similar to // MBAIRD: we have 'disassociated' this object from the referenced object, // the object representing the ord is now null, so set the fk to null. if (ref == null) { refPkValues = new Object[objFkFields.length]; } else { // BRJ: ref may be Proxy Class refClass = ProxyHelper.getRealClass(ref); ClassDescriptor refCld = descriptorRepository.getDescriptorFor(refClass); refPkValues = brokerHelper.getKeyValues(refCld, ref, false); } if( ojbFkFields.lenght != refPkValues.lenght ) throw new PersistenceBrokerException("The number of fields in foreign key doesn't match the number of fields in primary key (" + realObj.getClass().getName() + ")"); for (int i = 0; i < objFkFields.length; i++) { objFkFields[i].getPersistentField().set(realObj, refPkValues[i]); } Jakob, Armin, Thomas can someone confirm this? Edson Richter - Original Message - From: "Chiah Tong Kiat" <[EMAIL PROTECTED]> To: "OJB Users List" <[EMAIL PROTECTED]> Sent: Tuesday, July 08, 2003 11:38 PM Subject: Help in store function call in PersistenceBroker Hi I'm having some problem when I attempt to store the database. It's throwing the stack trace following stack trace com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:424) 2003-07-0 9 02:03:00,843 ERROR [ExecuteThread: '8' for queue: 'default'] jp.JPShipmentImpl (JPShipmentImpl.java:424) - org.apache.ojb.broker.PersistenceBrokerException: C ould not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.Array IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:263) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(Persiste nceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(Persiste nceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBroker Impl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersi stenceBroker.java:158) at com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:370) at com.fedex.cih.ejb.ShipmentBean.setMDEDetails(ShipmentBean.java:159) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl.setMDEDetails(ShipmentBean_6ssy 2e_EOImpl.java:202) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManage r.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3 0) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189) rethrown as org.apache.ojb.broker.PersistenceBrokerException: Could not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:275) at org.apache.ojb.broker.util.BrokerHelper.getKe
Re: Help in store function call in PersistenceBroker
I had this (exactly) stack trace when I made some reference (foreign key) with two fields mapping for a table that has only one field in primary key. I think OJB must check if fkfields[].length == pkfield[].lenght, and throw a better explanatory exception. The code in PersistenceBrokerImpl should be similar to // MBAIRD: we have 'disassociated' this object from the referenced object, // the object representing the ord is now null, so set the fk to null. if (ref == null) { refPkValues = new Object[objFkFields.length]; } else { // BRJ: ref may be Proxy Class refClass = ProxyHelper.getRealClass(ref); ClassDescriptor refCld = descriptorRepository.getDescriptorFor(refClass); refPkValues = brokerHelper.getKeyValues(refCld, ref, false); } if( ojbFkFields.lenght != refPkValues.lenght ) throw new PersistenceBrokerException("The number of fields in foreign key doesn't match the number of fields in primary key (" + realObj.getClass().getName() + ")"); for (int i = 0; i < objFkFields.length; i++) { objFkFields[i].getPersistentField().set(realObj, refPkValues[i]); } Jakob, Armin, Thomas can someone confirm this? Edson Richter - Original Message - From: "Chiah Tong Kiat" <[EMAIL PROTECTED]> To: "OJB Users List" <[EMAIL PROTECTED]> Sent: Tuesday, July 08, 2003 11:38 PM Subject: Help in store function call in PersistenceBroker Hi I'm having some problem when I attempt to store the database. It's throwing the stack trace following stack trace com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:424) 2003-07-0 9 02:03:00,843 ERROR [ExecuteThread: '8' for queue: 'default'] jp.JPShipmentImpl (JPShipmentImpl.java:424) - org.apache.ojb.broker.PersistenceBrokerException: C ould not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.Array IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:263) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(Persiste nceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(Persiste nceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBroker Impl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersi stenceBroker.java:158) at com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:370) at com.fedex.cih.ejb.ShipmentBean.setMDEDetails(ShipmentBean.java:159) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl.setMDEDetails(ShipmentBean_6ssy 2e_EOImpl.java:202) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManage r.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:3 0) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189) rethrown as org.apache.ojb.broker.PersistenceBrokerException: Could not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:275) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(Persiste nceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(Persiste nceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBroker Impl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl .java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.st
Help in store function call in PersistenceBroker
Hi I’m having some problem when I attempt to store the database. It’s throwing the stack trace following stack trace com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:424) 2003-07-0 9 02:03:00,843 ERROR [ExecuteThread: '8' for queue: 'default'] jp.JPShipmentImpl (JPShipmentImpl.java:424) - org.apache.ojb.broker.PersistenceBrokerException: C ould not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.Array IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:263) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(PersistenceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(PersistenceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBrokerImpl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersistenceBroker.java:158) at com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:370) at com.fedex.cih.ejb.ShipmentBean.setMDEDetails(ShipmentBean.java:159) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl.setMDEDetails(ShipmentBean_6ssy2e_EOImpl.java:202) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189) rethrown as org.apache.ojb.broker.PersistenceBrokerException: Could not generate primary key values for given Identity com.fedex.data.ShipmentCoreClearanceImpl{2057001}, exception was java.lang.ArrayIndexOutOfBoundsException at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:275) at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(BrokerHelper.java:204) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assertFkAssignment(PersistenceBrokerImpl.java:730) at org.apache.ojb.broker.core.PersistenceBrokerImpl.assignReferenceFKs(PersistenceBrokerImpl.java:2104) at org.apache.ojb.broker.core.PersistenceBrokerImpl.storeToDb(PersistenceBrokerImpl.java:1935) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:1874) at org.apache.ojb.broker.core.PersistenceBrokerImpl.store(PersistenceBrokerImpl.java:660) at org.apache.ojb.broker.core.DelegatingPersistenceBroker.store(DelegatingPersistenceBroker.java:158) at com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:370) at com.fedex.cih.ejb.ShipmentBean.setMDEDetails(ShipmentBean.java:159) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl.setMDEDetails(ShipmentBean_6ssy2e_EOImpl.java:202) at com.fedex.cih.ejb.ShipmentBean_6ssy2e_EOImpl_WLSkel.invoke(Unknown Source) at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:362) at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:313) at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:821) at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:308) at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30) at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213) at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189) com.fedex.cih.jp.JPShipmentImpl.setMDEDetails(JPShipmentImpl.java:446) 2003-07-0 9 02:03:01,187 DEBUG [ExecuteThread: '8' for queue: 'default'] jp.JPShipmentImpl (JPShipmentImpl.java:446) - Closing broker in finally setMDEDetails() : TX The problem happen when at the BrokerHelp Where the class descriptor class is return 2 primary key And the identity class return only contains one (which is correct since at the reference mapping I’m only setting only one) . ... - To unsubscribe, e-ma