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'


Reply via email to