OK!!
Uppers of the two mappings, IA1 is declared first. The other one
,IA2 is declared first.
----- Original Message -----
From: "Jakob Braeuchi" <[EMAIL PROTECTED]>
To: "OJB Users List" <[EMAIL PROTECTED]>
Sent: Thursday, January 29, 2004 2:17 AM
Subject: Re: I found a problem(it is maybe a bug)
> hi dogie,
>
> i can't see the difference between the two mappings except the sequence of
the
> definition of the IA-classes :(
> do you have an sql trace to show the different behaviour ?
>
> jakob
>
> 蔡博至 wrote:
> > Hi! Armin
> > I found if a class implement 2 interface, another class
referance a interface of both. OJB can not prefetch the referance object
successfully.
> > Example:
> > public class A implement IA1,IA2{
> > private String OID;
> > public String getOID(){
> > return OID;
> > }
> > public void setOID(String pNewValue){
> > OID = pNewValue;
> > }
> > :
> > :
> > }
> > public interface IA1{
> > }
> > public interface IA2{
> > }
> >
> > public class B{
> > private String AOID;
> > public String getAOID(){
> > return AOID;
> > }
> > public void setAOID(String pNewValue){
> > AOID= pNewValue;
> > }
> > private A referanceA;
> > public A getReferanceA(){
> > return referanceA;
> > }
> > public void setReferanceA(A pNewValue){
> > referanceA= pNewValue;
> > }
> > }
> >
> > if i declare repository_user:
> >
> > <class-descriptor class="IA1">
> > <extent-class class-ref="A"/>
> > </class-descriptor>
> > <class-descriptor class="IA2">
> > <extent-class class-ref="A"/>
> > </class-descriptor>
> > <class-descriptor isolation-level="optimistic" class="A" table="A">
> > <field-descriptor name="OID" column="OID" jdbc-type="CHAR"
primarykey="true" autoincrement="true" nullable="false"/>
> >
:
> >
:
> > </class-descriptor>
> >
> > <class-descriptor isolation-level="optimistic" class="B" table="B">
> > <field-descriptor name="OID" column="OID" jdbc-type="CHAR"
primarykey="true" autoincrement="true" nullable="false"/>
> > <field-descriptor name="AOID" column="AOID" jdbc-type="CHAR"
nullable="false"/>
> > <reference-descriptor name="referanceA" class-ref="IA1">
> > <foreignkey field-ref="AOID"/>
> > </reference-descriptor>
> > </class-descriptor>
> >
> > I query a B class, but when I call getReferanceA method , it return
null.
> > I found something wrong in associateBatched method of
org.apache.ojb.broker.accesslayer.ReferencePrefetcher.
> > In line 115 of org.apache.ojb.broker.accesslayer.ReferencePrefetcher,
the id is IA1(OID),but in line 119 the id2 is IA2(OID).
> > So in line 120 ,the two parameters is not qeual, and don't excute set.
> >
> >
> > But if I repository_user:
> >
> > <class-descriptor class="IA2">
> > <extent-class class-ref="A"/>
> > </class-descriptor>
> >
> > <class-descriptor class="IA1">
> > <extent-class class-ref="A"/>
> > </class-descriptor>
> >
> > <class-descriptor isolation-level="optimistic" class="A" table="A">
> > <field-descriptor name="OID" column="OID" jdbc-type="CHAR"
primarykey="true" autoincrement="true" nullable="false"/>
> >
:
> >
:
> > </class-descriptor>
> >
> > <class-descriptor isolation-level="optimistic" class="B" table="B">
> > <field-descriptor name="OID" column="OID" jdbc-type="CHAR"
primarykey="true" autoincrement="true" nullable="false"/>
> > <field-descriptor name="AOID" column="AOID" jdbc-type="CHAR"
nullable="false"/>
> > <reference-descriptor name="referanceA" class-ref="IA1">
> > <foreignkey field-ref="AOID"/>
> > </reference-descriptor>
> > </class-descriptor>
> >
> > I can query B and get A by calling getReferanceA method. Because the id
and id2 both are IA1(OID).
> > Dose anyone have the same problem?
> >
> > regards,
> > Dogie
> >
>
> ---------------------------------------------------------------------
> 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]