You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by Janet Song <sp...@silicomp.com.sg> on 2003/03/31 09:30:37 UTC
Problems when using composite primary keys
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" <jb...@gmx.ch>
To: "OJB Developers List" <oj...@db.apache.org>
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: ojb-dev-unsubscribe@db.apache.org
> >For additional commands, e-mail: ojb-dev-help@db.apache.org
> >
> >
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>
Re: Problems when using composite primary keys
Posted by Janet Song <sp...@silicomp.com.sg>.
Thx Jakob,
I've changed the IndirectionHandler class in the release 2 as you
recomended:
public Object invoke(Object proxy, Method method, Object[] args)
{
Object subject = null;
try
{
subject = getRealSubject();
// handle toString differently for non-materialized
proxies
// to avoid materialization due to logging.
if (subject == null)
{
if (method.getName() == "toString")
{
return "unmaterialized proxy for " + getIdentity();
}
else
{
return null;
}
}
else
{
Method m = subject.getClass().getMethod(method.getName(),
method.getParameterTypes());
return m.invoke(subject, args);
}
}
catch (Exception e)
{
log.error("Method invoking failed for method
*"+method.getName()+"* on object "+subject, e);
throw new PersistenceBrokerException("Error
invoking:"+method.getName(),e);
}
}
The following are entries in my descriptors files:
<class-descriptor
class = "A"
proxy="dynamic"
table = "A">
<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="ABRef"
class-ref="B">
<foreignkey field-ref="shipmentOid"/>
<foreignkey field-ref="countryCode"/>
</reference-descriptor>
</class-descriptor>
<class-descriptor
class = "B"
proxy="dynamic"
table = "B">
<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="counterRef"
class-ref="A">
<foreignkey field-ref="shipmentOidPiece"/>
<foreignkey field-ref="typeFlg"/>
</reference-descriptor>
</class-descriptor>
I still get this error:
[DEFAULT] WARN: OJB broker could not materialize
com.fedex.data.CorePieceCounterImpl{188119,JP}
submit flag: null
[DEFAULT] WARN: OJB broker could not materialize
com.fedex.data.CorePieceCounterImpl{188119,JP}
Type flag: null
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO:
Destroy object was called, try to close connection:
oracle.jdbc.driver.OracleConnection@16c163f
Any help on this is appreciated. Thx
regards,
Janet
----- Original Message -----
From: "Jakob Braeuchi" <jb...@gmx.ch>
To: "OJB Developers List" <oj...@db.apache.org>
Sent: Tuesday, April 01, 2003 05:15
Subject: Re: Problems when using composite primary keys
> hi janet,
>
> sorry, i overlooked the message in your stacktrace.
> the following sample using multiple keys works for me:
>
> <class-descriptor
> class="brj.ojb.MultiPkParent"
> table="multipkparent"
> >
> <field-descriptor id="1"
> name="id1"
> column="key1"
> jdbc-type="INTEGER"
> primarykey="true"
> />
> <field-descriptor id="2"
> name="id2"
> column="key2"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <field-descriptor id="3"
> name="field1"
> column="field1"
> jdbc-type="VARCHAR"
> />
> <field-descriptor id="4"
> name="field2"
> column="field2"
> jdbc-type="VARCHAR"
> />
> <collection-descriptor
> name="children"
> element-class-ref="brj.ojb.MultiPkChild"
> auto-retrieve="true"
> auto-update="true"
> auto-delete="true"
> >
> <inverse-foreignkey field-ref="c_id1"/>
> <inverse-foreignkey field-ref="c_id2"/>
> </collection-descriptor>
> </class-descriptor>
>
> <class-descriptor
> class="brj.ojb.MultiPkChild"
> table="multipkchild"
> proxy="dynamic"
> >
> <field-descriptor id="1"
> name="c_id1"
> column="parent_key1"
> jdbc-type="INTEGER"
> primarykey="true"
> />
> <field-descriptor id="2"
> name="c_id2"
> column="parent_key2"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <field-descriptor id="3"
> name="field1"
> column="field1"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <reference-descriptor
> name="parent"
> class-ref="brj.ojb.MultiPkParent"
> >
> <foreignkey field-ref="c_id1"/>
> <foreignkey field-ref="c_id2"/>
> </reference-descriptor>
> </class-descriptor>
>
> jakob
>
> Jakob Braeuchi wrote:
>
> > hi janet,
> >
> > don't you get an error message like "[DEFAULT] WARN: OJB broker could
> > not materialize ...." in the log before the npe occurs ?
> > do you have access to the source of ojb ?
> > if yes, please try to replace the following method in
IndirectionHandler:
> >
> > public Object invoke(Object proxy, Method method, Object[] args)
> > {
> > Object subject = null;
> > try
> > {
> > subject = getRealSubject();
> > // handle toString differently for
> > non-materialized proxies
> > // to avoid materialization due to logging.
> > if (subject == null)
> > {
> > if (method.getName() == "toString")
> > {
> > return "unmaterialized proxy for " + getIdentity();
> > }
> > else
> > {
> > return null;
> > }
> > }
> > else
> > {
> > Method m =
> > subject.getClass().getMethod(method.getName(),
> > method.getParameterTypes());
> > return m.invoke(subject, args);
> > }
> > }
> > catch (Exception e)
> > {
> > log.error("Method invoking failed for method
> > *"+method.getName()+"* on object "+subject, e);
> > throw new PersistenceBrokerException("Error
> > invoking:"+method.getName(),e);
> > }
> > }
> >
> >
> > hth
> > jakob
> >
> > Janet Song wrote:
> >
> >> 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" <jb...@gmx.ch>
> >> To: "OJB Developers List" <oj...@db.apache.org>
> >> 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: ojb-dev-unsubscribe@db.apache.org
> >>>> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> >>> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> >> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>
> >>
> >>
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> > For additional commands, e-mail: ojb-dev-help@db.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>
>
Re: Problems when using composite primary keys
Posted by Janet Song <sp...@silicomp.com.sg>.
Thx Jakob,
I've changed the IndirectionHandler class in the release 2 as you
recomended:
public Object invoke(Object proxy, Method method, Object[] args)
{
Object subject = null;
try
{
subject = getRealSubject();
// handle toString differently for non-materialized
proxies
// to avoid materialization due to logging.
if (subject == null)
{
if (method.getName() == "toString")
{
return "unmaterialized proxy for " + getIdentity();
}
else
{
return null;
}
}
else
{
Method m = subject.getClass().getMethod(method.getName(),
method.getParameterTypes());
return m.invoke(subject, args);
}
}
catch (Exception e)
{
log.error("Method invoking failed for method
*"+method.getName()+"* on object "+subject, e);
throw new PersistenceBrokerException("Error
invoking:"+method.getName(),e);
}
}
The following are entries in my descriptors files:
<class-descriptor
class = "A"
proxy="dynamic"
table = "A">
<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="ABRef"
class-ref="B">
<foreignkey field-ref="shipmentOid"/>
<foreignkey field-ref="countryCode"/>
</reference-descriptor>
</class-descriptor>
<class-descriptor
class = "B"
proxy="dynamic"
table = "B">
<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="counterRef"
class-ref="A">
<foreignkey field-ref="shipmentOidPiece"/>
<foreignkey field-ref="typeFlg"/>
</reference-descriptor>
</class-descriptor>
I still get this error:
[DEFAULT] WARN: OJB broker could not materialize
com.fedex.data.CorePieceCounterImpl{188119,JP}
submit flag: null
[DEFAULT] WARN: OJB broker could not materialize
com.fedex.data.CorePieceCounterImpl{188119,JP}
Type flag: null
[org.apache.ojb.broker.accesslayer.ConnectionFactoryPooledImpl] INFO:
Destroy object was called, try to close connection:
oracle.jdbc.driver.OracleConnection@16c163f
Any help on this is appreciated. Thx
regards,
Janet
----- Original Message -----
From: "Jakob Braeuchi" <jb...@gmx.ch>
To: "OJB Developers List" <oj...@db.apache.org>
Sent: Tuesday, April 01, 2003 05:15
Subject: Re: Problems when using composite primary keys
> hi janet,
>
> sorry, i overlooked the message in your stacktrace.
> the following sample using multiple keys works for me:
>
> <class-descriptor
> class="brj.ojb.MultiPkParent"
> table="multipkparent"
> >
> <field-descriptor id="1"
> name="id1"
> column="key1"
> jdbc-type="INTEGER"
> primarykey="true"
> />
> <field-descriptor id="2"
> name="id2"
> column="key2"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <field-descriptor id="3"
> name="field1"
> column="field1"
> jdbc-type="VARCHAR"
> />
> <field-descriptor id="4"
> name="field2"
> column="field2"
> jdbc-type="VARCHAR"
> />
> <collection-descriptor
> name="children"
> element-class-ref="brj.ojb.MultiPkChild"
> auto-retrieve="true"
> auto-update="true"
> auto-delete="true"
> >
> <inverse-foreignkey field-ref="c_id1"/>
> <inverse-foreignkey field-ref="c_id2"/>
> </collection-descriptor>
> </class-descriptor>
>
> <class-descriptor
> class="brj.ojb.MultiPkChild"
> table="multipkchild"
> proxy="dynamic"
> >
> <field-descriptor id="1"
> name="c_id1"
> column="parent_key1"
> jdbc-type="INTEGER"
> primarykey="true"
> />
> <field-descriptor id="2"
> name="c_id2"
> column="parent_key2"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <field-descriptor id="3"
> name="field1"
> column="field1"
> jdbc-type="VARCHAR"
> primarykey="true"
> />
> <reference-descriptor
> name="parent"
> class-ref="brj.ojb.MultiPkParent"
> >
> <foreignkey field-ref="c_id1"/>
> <foreignkey field-ref="c_id2"/>
> </reference-descriptor>
> </class-descriptor>
>
> jakob
>
> Jakob Braeuchi wrote:
>
> > hi janet,
> >
> > don't you get an error message like "[DEFAULT] WARN: OJB broker could
> > not materialize ...." in the log before the npe occurs ?
> > do you have access to the source of ojb ?
> > if yes, please try to replace the following method in
IndirectionHandler:
> >
> > public Object invoke(Object proxy, Method method, Object[] args)
> > {
> > Object subject = null;
> > try
> > {
> > subject = getRealSubject();
> > // handle toString differently for
> > non-materialized proxies
> > // to avoid materialization due to logging.
> > if (subject == null)
> > {
> > if (method.getName() == "toString")
> > {
> > return "unmaterialized proxy for " + getIdentity();
> > }
> > else
> > {
> > return null;
> > }
> > }
> > else
> > {
> > Method m =
> > subject.getClass().getMethod(method.getName(),
> > method.getParameterTypes());
> > return m.invoke(subject, args);
> > }
> > }
> > catch (Exception e)
> > {
> > log.error("Method invoking failed for method
> > *"+method.getName()+"* on object "+subject, e);
> > throw new PersistenceBrokerException("Error
> > invoking:"+method.getName(),e);
> > }
> > }
> >
> >
> > hth
> > jakob
> >
> > Janet Song wrote:
> >
> >> 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" <jb...@gmx.ch>
> >> To: "OJB Developers List" <oj...@db.apache.org>
> >> 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: ojb-dev-unsubscribe@db.apache.org
> >>>> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> >>> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> >> For additional commands, e-mail: ojb-dev-help@db.apache.org
> >>
> >>
> >>
> >>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> > For additional commands, e-mail: ojb-dev-help@db.apache.org
> >
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>
>
Re: Problems when using composite primary keys
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi janet,
sorry, i overlooked the message in your stacktrace.
the following sample using multiple keys works for me:
<class-descriptor
class="brj.ojb.MultiPkParent"
table="multipkparent"
>
<field-descriptor id="1"
name="id1"
column="key1"
jdbc-type="INTEGER"
primarykey="true"
/>
<field-descriptor id="2"
name="id2"
column="key2"
jdbc-type="VARCHAR"
primarykey="true"
/>
<field-descriptor id="3"
name="field1"
column="field1"
jdbc-type="VARCHAR"
/>
<field-descriptor id="4"
name="field2"
column="field2"
jdbc-type="VARCHAR"
/>
<collection-descriptor
name="children"
element-class-ref="brj.ojb.MultiPkChild"
auto-retrieve="true"
auto-update="true"
auto-delete="true"
>
<inverse-foreignkey field-ref="c_id1"/>
<inverse-foreignkey field-ref="c_id2"/>
</collection-descriptor>
</class-descriptor>
<class-descriptor
class="brj.ojb.MultiPkChild"
table="multipkchild"
proxy="dynamic"
>
<field-descriptor id="1"
name="c_id1"
column="parent_key1"
jdbc-type="INTEGER"
primarykey="true"
/>
<field-descriptor id="2"
name="c_id2"
column="parent_key2"
jdbc-type="VARCHAR"
primarykey="true"
/>
<field-descriptor id="3"
name="field1"
column="field1"
jdbc-type="VARCHAR"
primarykey="true"
/>
<reference-descriptor
name="parent"
class-ref="brj.ojb.MultiPkParent"
>
<foreignkey field-ref="c_id1"/>
<foreignkey field-ref="c_id2"/>
</reference-descriptor>
</class-descriptor>
jakob
Jakob Braeuchi wrote:
> hi janet,
>
> don't you get an error message like "[DEFAULT] WARN: OJB broker could
> not materialize ...." in the log before the npe occurs ?
> do you have access to the source of ojb ?
> if yes, please try to replace the following method in IndirectionHandler:
>
> public Object invoke(Object proxy, Method method, Object[] args)
> {
> Object subject = null;
> try
> {
> subject = getRealSubject();
> // handle toString differently for
> non-materialized proxies
> // to avoid materialization due to logging.
> if (subject == null)
> {
> if (method.getName() == "toString")
> {
> return "unmaterialized proxy for " + getIdentity();
> }
> else
> {
> return null;
> }
> }
> else
> {
> Method m =
> subject.getClass().getMethod(method.getName(),
> method.getParameterTypes());
> return m.invoke(subject, args);
> }
> }
> catch (Exception e)
> {
> log.error("Method invoking failed for method
> *"+method.getName()+"* on object "+subject, e);
> throw new PersistenceBrokerException("Error
> invoking:"+method.getName(),e);
> }
> }
>
>
> hth
> jakob
>
> Janet Song wrote:
>
>> 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" <jb...@gmx.ch>
>> To: "OJB Developers List" <oj...@db.apache.org>
>> 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: ojb-dev-unsubscribe@db.apache.org
>>>> For additional commands, e-mail: ojb-dev-help@db.apache.org
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>>> For additional commands, e-mail: ojb-dev-help@db.apache.org
>>>
>>>
>>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>> For additional commands, e-mail: ojb-dev-help@db.apache.org
>>
>>
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>
Re: Problems when using composite primary keys
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi janet,
don't you get an error message like "[DEFAULT] WARN: OJB broker could
not materialize ...." in the log before the npe occurs ?
do you have access to the source of ojb ?
if yes, please try to replace the following method in IndirectionHandler:
public Object invoke(Object proxy, Method method, Object[] args)
{
Object subject = null;
try
{
subject = getRealSubject();
// handle toString differently for non-materialized
proxies
// to avoid materialization due to logging.
if (subject == null)
{
if (method.getName() == "toString")
{
return "unmaterialized proxy for " + getIdentity();
}
else
{
return null;
}
}
else
{
Method m = subject.getClass().getMethod(method.getName(),
method.getParameterTypes());
return m.invoke(subject, args);
}
}
catch (Exception e)
{
log.error("Method invoking failed for method
*"+method.getName()+"* on object "+subject, e);
throw new PersistenceBrokerException("Error
invoking:"+method.getName(),e);
}
}
hth
jakob
Janet Song wrote:
>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" <jb...@gmx.ch>
>To: "OJB Developers List" <oj...@db.apache.org>
>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: ojb-dev-unsubscribe@db.apache.org
>>>For additional commands, e-mail: ojb-dev-help@db.apache.org
>>>
>>>
>>>
>>>
>>>
>>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>>For additional commands, e-mail: ojb-dev-help@db.apache.org
>>
>>
>>
>>
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>For additional commands, e-mail: ojb-dev-help@db.apache.org
>
>
>
>
Re: Problems when using composite primary keys
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi janet,
btw it's useless to use proxy='true' in reference-descriptor when you
have proxy='dynamic' in the referenced class.
jakob
Janet Song wrote:
>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" <jb...@gmx.ch>
>To: "OJB Developers List" <oj...@db.apache.org>
>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: ojb-dev-unsubscribe@db.apache.org
>>>For additional commands, e-mail: ojb-dev-help@db.apache.org
>>>
>>>
>>>
>>>
>>>
>>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>>For additional commands, e-mail: ojb-dev-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: Problems when using composite primary keys
Posted by Jakob Braeuchi <jb...@gmx.ch>.
hi janet,
btw it's useless to use proxy='true' in reference-descriptor when you
have proxy='dynamic' in the referenced class.
jakob
Janet Song wrote:
>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" <jb...@gmx.ch>
>To: "OJB Developers List" <oj...@db.apache.org>
>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: ojb-dev-unsubscribe@db.apache.org
>>>For additional commands, e-mail: ojb-dev-help@db.apache.org
>>>
>>>
>>>
>>>
>>>
>>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
>>For additional commands, e-mail: ojb-dev-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
>
>
>
>