Mhh, Why should there be more than one field descriptor for a single attribute? What do expect to happen in your scenario?
cheers, Thomas Gareth Cronin wrote: > Further to this... it seems that when there is more than one field > descriptor for a single attribute, the path expression algorithms return the > one with the *lowest* id number of all of them. So this mapping: > <field-descriptor column="cuboidweight_grain" > conversion="com.kiwiplan.measure.ojb.QuantityGrainMapping" id="1" > jdbc-type="BIGINT" name="cuboidWeight"/> > <field-descriptor column="cuboidweight_units" > conversion="com.kiwiplan.measure.ojb.QuantityUnitMapping" id="2" > jdbc-type="INTEGER" name="cuboidWeight"/> > <field-descriptor column="cuboidweight_amount" > conversion="com.kiwiplan.measure.ojb.QuantityAmountMapping" id="3" > jdbc-type="BIGINT" name="cuboidWeight"/> > > Gives rise to the cuboidweight_grain descriptor being returned from the > ClassDescriptor.getFieldDescriptorByName() and ...ByPath(). > > G > > >>-----Original Message----- >>From: Thomas Mahler [mailto:[EMAIL PROTECTED]] >>Sent: Wednesday, 16 October 2002 7:03 p.m. >>To: OJB Users List >>Subject: Re: Clarification of path expressions vs criteria >> >> >>Hi Gareth >> >>Gareth Cronin wrote: >> >>>OK... as I understand it, when I query by criteria >> >>(PersistenceBroker), the >> >>>criteria objects are being converted directly into WHERE clauses >> >>No, the criteria are translated into SQL by first looking up >>the mapping >>data. If you have used addEqualto("myAttribute", "someValue") >>OJB will >>lookup the ClassDescriptor of the class in question and will >>look for a >>FieldDescriptor for the Attribute "myAttribute". OJB will use >>the column >>name declared in the repository. If the field-descriptor looks like: >> >><field-descriptor id="1" >> name="myAttribute" >> column="MY_COLUMN" >> jdbc-type="VARCHAR" >>/> >> >>OJB will use "MY_COLUMN" in the WHERE clause ("WHERE >>MY_COLUMN='someValue'") >> >>IF OJB can not find a filed-descriptor for "myAttribute" it >>will use it >>as a column name directly: ("WHERE myAttribute='someValue'") >> >> >>>and >>>therefore the left argument of the (for example) >> >>addEqualTo() method is a >> >>>*column* name, not an attribute. Is this correct? >> >>As mentionend above: it can be both ! >> >> >>>It certainly seems to work >>>at the moment. >> >>correct! but you can also use java attribute names in criteria >>expressions. This is the recommended way, as an O/R tool is meant to >>*hide* RDBMS details like table and column names from the application >>programmer. >> >> >>>Now I want to use path expressions, but the documentation >> >>refers to the >> >>>syntax "relationshipname.attributename". Is "attributename" >> >>an attribute >> >>>name, i.e. the name attribute-value on a field-descriptor, >> >>or a column name? >> >>Path expression are always referring to reference attributes of java >>classes. >>the idea of path expressions is to use the mapping >>information to build >>join statements. >>OJB can only infer a JOIN statement correctly if there is a >>reference-descriptor pointing to another persistent class >>which also has >>a class-descriptor. >>OJB cannnot infer JOIN statements if you use column names. >> >> >>>The difficulties arise from complex mapping where field >> >>conversion and >> >>>row-readers are being used to map one attribute across >> >>several columns, as >> >>>per earlier postings I have made. If I can't use column >> >>names, then how does >> >>>OJB know which field mapping to use in the where clause? >> >>If it is not possible to use attribute names you can not use the >>path-expression feature. >>In this case you must use QueryBySql. >> >>cheers, >>Thomas >> >> >> >>>Thanks >>> >>>Gareth. >>> >>>--------------------------------------------- >>>Gareth Cronin >>>Analyst/Programmer >>>Kiwiplan NZ Ltd: http://www.kiwiplan.com >>>Ph (64 9) 2727622 x854 >>> >>>-- >>>To unsubscribe, e-mail: >> > <mailto:[EMAIL PROTECTED]> > >>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> >> >> >> >> > > > > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> > > > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
