Hi, Thanks. Got that problem solved. It works fine when i map a compound primary key from one table to another with a single primary key. However when i map compound primary keys to compound primary keys, i get a NullPointerException which results from [org.apache.ojb.broker.accesslayer.IndirectionHandler] ERROR: Met.....
e.g Table A: <class-descriptor class = "com.data.A" proxy="dynamic" table = "Shipment"> <field-descriptor id = "1" name = "shipmentOid" column = "SHIPMENT_OID" jdbc-type ="INTEGER" primarykey = "true" /> <field-descriptor id = "2" name = "countryCode" column = "REF_COUNTRY_CD" jdbc-type ="VARCHAR" primarykey = "true" /> .... <reference-descriptor name="piece" class-ref="com.data.B" proxy="true"> <foreignkey field-id-ref="1"/> <foreignkey field-id-ref="2"/> </reference-descriptor> </class-descriptor> Table B: <class-descriptor class = "com.data.B" proxy="dynamic" table = "Piece"> <field-descriptor id = "1" name = "shipmentOidPiece" column = "SHIPMENT_OID" jdbc-type ="INTEGER" primarykey = "true" /> <field-descriptor id = "2" name = "typeFlg" column = "TYPE_FLG" jdbc-type ="VARCHAR" primarykey = "true" /> <reference-descriptor name="piece" class-ref="com.data.A" proxy="true"> <foreignkey field-id-ref="1"/> <foreignkey field-id-ref="2"/> </reference-descriptor> </class-descriptor> [DEFAULT] WARN: OJB broker could not materialize com.fedex.data.CorePieceCounterImpl{188119,JP} [org.apache.ojb.broker.accesslayer.IndirectionHandler] ERROR: Method invoking failed for method *getSubmitFlag* on object null null java.lang.NullPointerException at org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(Unknown Source) at $Proxy1.getSubmitFlag(Unknown Source) at TestClient.testEqualCriteriaOneToOne(TestClient.java:104) at TestClient.runApp(TestClient.java:78) at TestClient.main(TestClient.java:71) Exception in thread "main" java.lang.NullPointerException at org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(Unknown Source) at $Proxy1.getSubmitFlag(Unknown Source) at TestClient.testEqualCriteriaOneToOne(TestClient.java:104) at TestClient.runApp(TestClient.java:78) at TestClient.main(TestClient.java:71) rethrown as org.apache.ojb.broker.PersistenceBrokerException: Error invoking:getSubmitFlag at org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(Unknown Source) at $Proxy1.getSubmitFlag(Unknown Source) at TestClient.testEqualCriteriaOneToOne(TestClient.java:104) at TestClient.runApp(TestClient.java:78) at TestClient.main(TestClient.java:71) Caused by: java.lang.NullPointerException ... 5 more Any help on this is appreciated. Thanks regards. Janet ----- Original Message ----- From: "Jakob Braeuchi" <[EMAIL PROTECTED]> To: "OJB Developers List" <[EMAIL PROTECTED]> Sent: Saturday, March 29, 2003 01:15 Subject: Re: ArrayIndexOutOfBoundsException when using composite primary keys > hi janet, > > imo this problem is coming from a reference-descriptor not matching the > number of pk fields in the referenced object: > > <class-descriptor > class="brj.ojb.Person" > table="tabPerson" > > > <field-descriptor id="1" > name="id" > column="id" > jdbc-type="INTEGER" > primarykey="true" <<<< pk1 > autoincrement="true" > conversion="brj.ojb.TestFieldConversion" > /> > <field-descriptor id="2" > name="vorname" > column="vorname" > jdbc-type="VARCHAR" > /> > <field-descriptor id="3" > name="name" > column="name" > jdbc-type="VARCHAR" > primarykey="true" <<<< pk2 > /> > ... > <reference-descriptor > name="partner" > class-ref="brj.ojb.Person" > proxy="true" > > > <foreignkey field-ref="idPartner"/> <<<< one fk ('name') is > missing > </reference-descriptor> > > hth > jakob > > > Janet Song wrote: > > >Hi, > > > >When i map compound or composite primary keys, i get an > >ArrayOutOfBoundsException. Single primary key is fine. Appreciate it if > >someone could shed some light on this problem. Thanks! > > > > > >[org.apache.ojb.broker.accesslayer.JdbcAccessImpl] ERROR: > >PersistenceBrokerException during the execution of materializeObject: Could > >not generate primary key values for given Identity > >com.fedex.data.CorePieceCounterImpl{188119}, exception was > >java.lang.ArrayIndexOutOfBoundsException: 1: 1 > >Could not generate primary key values for given Identity > >com.fedex.data.CorePieceCounterImpl{188119}, exception was > >java.lang.ArrayIndexOutOfBoundsException: 1: 1 > >java.lang.ArrayIndexOutOfBoundsException: 1 > > at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(Unknown > >Source) > > at org.apache.ojb.broker.util.BrokerHelper.getKeyValues(Unknown > >Source) > > at > >org.apache.ojb.broker.accesslayer.StatementManager.getKeyValues(Unknown > >Source) > > at > >org.apache.ojb.broker.accesslayer.StatementManager.bindSelect(Unknown > >Source) > > at > >org.apache.ojb.broker.accesslayer.JdbcAccessImpl.materializeObject(Unknown > >Source) > > at > >org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getDBObject(Unknown > >Source) > > at > >org.apache.ojb.broker.singlevm.PersistenceBrokerImpl.getObjectByIdentity(Un k > >nown Source) > > at > >org.apache.ojb.broker.singlevm.DelegatingPersistenceBroker.getObjectByIdent i > >ty(Unknown Source) > > at > >org.apache.ojb.broker.accesslayer.IndirectionHandler.materializeSubject(Unk n > >own Source) > > at > >org.apache.ojb.broker.accesslayer.IndirectionHandler.getRealSubject(Unknown > >Source) > > at > >org.apache.ojb.broker.accesslayer.IndirectionHandler.invoke(Unknown Source) > > at $Proxy1.getSubmitFlag(Unknown Source) > > at TestClient.testEqualCriteriaOneToOne(TestClient.java:104) > > > > > >regards, > > > >Janet > > > > > > > >--------------------------------------------------------------------- > >To unsubscribe, e-mail: [EMAIL PROTECTED] > >For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]