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]

Reply via email to