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]>