I'm trying to write a custom finder by editing the orion-ejb-jar.xml
file. I understand the syntax for params ($beanvar = $argnum),
but I have an entity with a dependent object. The entity is
Contact and the dependent object Address. How do I specify fields
of the dependent object within the query of the Contact entity?
I tried $addressStreet1 and $address.street1 but that didn't work.
Orion says I only have "address". Below is a snippet of orion-ejb-jar
and after it is the error message that Orion throws.
Thanks,
-tim
orion-ejb-jar.xml:
<entity-deployment name="Contact" location="Contact" ... >
<primkey-mapping>
<cmp-field-mapping name="code" persistence-name="code" />
</primkey-mapping>
<cmp-field-mapping name="name" persistence-name="name" />
<cmp-field-mapping name="company" persistence-name="company" />
<cmp-field-mapping name="address">
<properties>
<cmp-field-mapping name="zip" persistence-name="addressZip" />
<cmp-field-mapping name="street3" persistence-name="addressStreet3" />
<cmp-field-mapping name="state" persistence-name="addressState" />
<cmp-field-mapping name="street2" persistence-name="addressStreet2" />
<cmp-field-mapping name="street1" persistence-name="addressStreet1" />
<cmp-field-mapping name="country" persistence-name="addressCountry" />
<cmp-field-mapping name="city" persistence-name="addressCity" />
</properties>
</cmp-field-mapping>
<cmp-field-mapping name="phone" persistence-name="phone" />
<cmp-field-mapping name="fax" persistence-name="fax" />
<cmp-field-mapping name="email" persistence-name="email" />
<finder-method query="$name=$1 AND $company=$2 AND $address.street1=$3 AND
$address.street2=$4 AND $address.street3=$5 AND $address.city=$6 AND
$address.state=$7 AND $address.zip=$8 AND $address.country=$9 AND $phone
=$10 AND $fax=$11 AND $email=$12">
<!-- Generated SQL: "select Contact.code, Contact.name, Contact.company,
Contact.addressZip, Contact.addressStreet3, Contact.addressState,
Contact.addressStreet2, Contact.addressStreet1, Contact.addressCountry,
Contact.addressCity, Contact.phone, Contact.fax, Contact.email from Contact"
-->
<method>
<ejb-name>Contact</ejb-name>
<method-name>findByAll</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
</finder-method>
error thrown by Orion:
Error compiling file:/usr/local/orion-1.4.0/applications/tfc/tfcejb.jar:
Unable to process query: field street1 does not have a subproperty/field
named street1 at column 45 in query '?name=?1 AND ?company=?2 AND
?address.street1=?3 AND ?address.street2=?4 AND ?address.street3=?5 AND
?address.city=?6 AND ?address.state=?7 AND ?address.zip=?8 AND
?address.country=?9 AND ?phone=?10 AND ?fax=?11 AND ?email=?12'