You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Chiah Tong Kiat <ct...@silicomp.com.sg> on 2003/07/09 04:38:06 UTC
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.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)
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)
RE: Help in store function call in PersistenceBroker
Posted by Chiah Tong Kiat <ct...@silicomp.com.sg>.
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:edson.richter@mgrinformatica.com.br]
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" <ed...@mgrinformatica.com.br>
To: "OJB Users List" <oj...@db.apache.org>
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" <ct...@silicomp.com.sg>
To: "OJB Users List" <oj...@db.apache.org>
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.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)
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-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.497 / Virus Database: 296 - Release Date: 4/7/2003
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: Help in store function call in PersistenceBroker
Posted by Edson Carlos Ericksson Richter <ed...@mgrinformatica.com.br>.
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" <ed...@mgrinformatica.com.br>
To: "OJB Users List" <oj...@db.apache.org>
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" <ct...@silicomp.com.sg>
To: "OJB Users List" <oj...@db.apache.org>
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.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)
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-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.497 / Virus Database: 296 - Release Date: 4/7/2003
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
Re: Help in store function call in PersistenceBroker
Posted by Edson Carlos Ericksson Richter <ed...@mgrinformatica.com.br>.
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" <ct...@silicomp.com.sg>
To: "OJB Users List" <oj...@db.apache.org>
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.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)
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-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.497 / Virus Database: 296 - Release Date: 4/7/2003
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org