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]