You should now be able to use cmp 2.x relationships.

I finally commit the rest of the relationship code I have been working on.
It took forever because half way throught the change I decided that I didn't
like my metadata package, and had to rewrite it.

If anyone would like to help out with the cmp 2.x project, you can start by
trying to use the relationship code.  There appear to be an infinate number
of possiable configurations a relationship, and my test cases only scratch
the surface. Just using the code should turn up many bugs.

By the end of the week, I will post an updated quick doc which has full
details on how to configure the relationship mapping. I have attached a copy
of the config file to the end of this message for anyone that wants to try
the new code ASAP.

Next, I will start working on the ejb-ql parser.  About a month a go I read
the book "Building Parsers with Java" and feel like it will be a fairly
simple task.  I also just started "The Cathedral & the Bazaar,"  which was
an eye opener for me.  I have a long history of cathedral building, and that
is how I have been approaching the cmp 2.x project.  In the future, I hope
to be more open in my developement and will start by committing much smaller
changes.

On a final note, everyone should read Josh Bloch's book "Effective Java."
It is the kind of book that I read every couple of years that reminds me how
little I know.

-dain

- - - - - - - - - - Example jbosscmp-jdbc.xml - - - - - - - - - - -

<?xml version="1.0" encoding="UTF-8"?>
<jbosscmp-jdbc>

 <defaults>
  <datasource></datasource>
  <debug>false</debug>
  <create-table>true</create-table>
  <remove-table>true</remove-table>
  <tuned-updates>true</tuned-updates>
  <read-only>false</read-only>
  <time-out>300</time-out>
  <select-for-update>false</select-for-update>
  <pk-constraint>true</pk-constraint>
  <relation-mapping-style>foreign-key</relation-mapping-style>
 </defaults>

 <enterprise-beans>
  <entity>
   <ejb-name>CDBean</ejb-name>
   <table-name>CD</table-name>
   <cmp-field>
    <field-name>id</field-name>
    <column-name>ID_XX</column-name>
    <jdbc-type>VARCHAR</jdbc-type>
    <sql-type>VARCHAR(50)</sql-type>
   </cmp-field>
   <cmp-field>
    <field-name>title</field-name>
    <column-name>TITLE</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>artist</field-name>
    <column-name>ARTIST</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>type</field-name>
    <column-name>TYPE</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>notes</field-name>
    <column-name>NOTES</column-name>
   </cmp-field>

   <eager-load/>

   <lazy-load-groups>
    <lazy-load-group>
     <desription>Blah</desription>
     <field-name>type</field-name>
     <field-name>notes</field-name>
    </lazy-load-group>
   </lazy-load-groups>

   <query>
    <description>Search all fields in cd</description>
    <query-method>
     <method-name>findInAnyField</method-name>
     <method-params>
      <method-param>java.lang.String</method-param>
     </method-params>
    </query-method>
    <declared-sql>
     <where>TITLE={0} OR ARTIST={0} OR TYPE={0} OR NOTES={0}</where>
    </declared-sql>
   </query>
  </entity>

  <entity>
   <ejb-name>UserEJB</ejb-name>
   <table-name>USER</table-name>
   <cmp-field>
    <field-name>userId</field-name>
    <column-name>USER_ID</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>internalId</field-name>
    <column-name>INTERNAL_ID</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>userName</field-name>
    <property>
     <property-name>first</property-name>
     <column-name>FIRST_NAME</column-name>
     <jdbc-type>VARCHAR</jdbc-type>
     <sql-type>VARCHAR(100)</sql-type>
    </property>
    <property>
     <property-name>mi</property-name>
     <column-name>MI</column-name>
    </property>
    <property>
     <property-name>last</property-name>
     <column-name>LAST_NAME</column-name>
    </property>
   </cmp-field>
   <cmp-field>
    <field-name>address</field-name>
    <column-name>ADDRESS</column-name>
   </cmp-field>
   <cmp-field>
    <field-name>creditCard</field-name>
    <column-name>CREDIT_CARD</column-name>
   </cmp-field>

   <eager-load>
    <field-name>internalId</field-name>
   </eager-load>

   <lazy-load-groups>
    <lazy-load-group>
     <desription>Blah</desription>
     <field-name>userName</field-name>
     <field-name>creditCard</field-name>
    </lazy-load-group>
   </lazy-load-groups>
  </entity>
 </enterprise-beans>

 <relationships>
  <ejb-relation>
   <ejb-relation-name>Customer-User</ejb-relation-name>
   <foreign-key-mapping>
    <ejb-relationship-role>

<ejb-relationship-role-name>customer-is-a-user</ejb-relationship-role-name>

     <foreign-key-fields>
      <foreign-key-field>
       <field-name>userId</field-name>
       <column-name>USER_ID</column-name>
      </foreign-key-field>
     </foreign-key-fields>

    </ejb-relationship-role>

    <ejb-relationship-role>

<ejb-relationship-role-name>user-for-customer</ejb-relationship-role-name>

     <foreign-key-fields/>

    </ejb-relationship-role>
   </foreign-key-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_OneToMany_Bi_Table</ejb-relation-name>
   <table-mapping>
    <table-name>AB_OneToManyBi</table-name>
    <create-table>true</create-table>
    <remove-table>true</remove-table>
    <read-only>false</read-only>
    <time-out>300</time-out>
    <select-for-update>false</select-for-update>
    <pk-constraint>true</pk-constraint>

    <ejb-relationship-role>
     <ejb-relationship-role-name>A-has-Bs</ejb-relationship-role-name>

     <table-key-fields>
      <table-key-field>
       <field-name>id</field-name>
       <column-name>A_ID_PK</column-name>
      </table-key-field>
     </table-key-fields>

    </ejb-relationship-role>

    <ejb-relationship-role>
     <ejb-relationship-role-name>B-belongsto-A</ejb-relationship-role-name>

     <table-key-fields>
      <table-key-field>
       <field-name>id</field-name>
       <column-name>B_ID_PK</column-name>
      </table-key-field>
     </table-key-fields>

    </ejb-relationship-role>
   </table-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_OneToMany_Bi_FK</ejb-relation-name>
   <foreign-key-mapping>
    <ejb-relationship-role>
     <ejb-relationship-role-name>A-has-Bs</ejb-relationship-role-name>

     <foreign-key-fields/>

    </ejb-relationship-role>

    <ejb-relationship-role>
     <ejb-relationship-role-name>B-belongsto-A</ejb-relationship-role-name>

     <foreign-key-fields>
      <foreign-key-field>
       <field-name>id</field-name>
       <column-name>A_ID_PK</column-name>
      </foreign-key-field>
     </foreign-key-fields>

    </ejb-relationship-role>
   </foreign-key-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_OneToMany_Uni_Table</ejb-relation-name>
   <table-mapping>
    <table-name>AB_OneToManyUni</table-name>
    <create-table>true</create-table>
    <remove-table>true</remove-table>
    <read-only>false</read-only>
    <time-out>300</time-out>
    <select-for-update>false</select-for-update>
    <pk-constraint>true</pk-constraint>
   </table-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_OneToMany_Uni_FK</ejb-relation-name>
   <foreign-key-mapping>
   </foreign-key-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_ManyToOne_Uni_Table</ejb-relation-name>
   <table-mapping>
    <table-name>AB_ManyToOneUni</table-name>
    <create-table>true</create-table>
    <remove-table>true</remove-table>
    <read-only>false</read-only>
    <time-out>300</time-out>
    <select-for-update>false</select-for-update>
    <pk-constraint>true</pk-constraint>
   </table-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_ManyToOne_Uni_FK</ejb-relation-name>
   <foreign-key-mapping>
   </foreign-key-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_ManyToMany_Bi</ejb-relation-name>
   <table-mapping>
    <table-name>AB_ManyToManyBi</table-name>
    <create-table>true</create-table>
    <remove-table>true</remove-table>
    <read-only>false</read-only>
    <time-out>300</time-out>
    <select-for-update>false</select-for-update>
    <pk-constraint>true</pk-constraint>
   </table-mapping>
  </ejb-relation>

  <ejb-relation>
   <ejb-relation-name>AB_ManyToMany_Uni</ejb-relation-name>
   <table-mapping>
    <table-name>AB_ManyToManyUni</table-name>
    <create-table>true</create-table>
    <remove-table>true</remove-table>
    <read-only>false</read-only>
    <time-out>300</time-out>
    <select-for-update>false</select-for-update>
    <pk-constraint>true</pk-constraint>
   </table-mapping>
  </ejb-relation>
 </relationships>

 <dependent-value-classes>
  <dependent-value-class>
   <description>address information</description>
   <class>com.hypothermic.example.Address</class>
   <property>
    <property-name>line1</property-name>
    <column-name>LINE1</column-name>
   </property>
   <property>
    <property-name>line2</property-name>
    <column-name>LINE2</column-name>
   </property>
   <property>
    <property-name>city</property-name>
    <column-name>CITY</column-name>
   </property>
   <property>
    <property-name>state</property-name>
    <column-name>ST</column-name>
    <jdbc-type>VARCHAR</jdbc-type>
    <sql-type>VARCHAR(2)</sql-type>
   </property>
   <property>
    <property-name>zip</property-name>
   </property>
   <property>
    <property-name>zipPlusFour</property-name>
    <column-name>ZIP_4</column-name>
   </property>
  </dependent-value-class>
  <dependent-value-class>
   <description>Formal Name</description>
   <class>com.hypothermic.example.Name</class>
   <property>
    <property-name>first</property-name>
    <column-name>FIRST</column-name>
   </property>
   <property>
    <property-name>mi</property-name>
    <column-name>MI</column-name>
   </property>
   <property>
    <property-name>last</property-name>
    <column-name>LAST</column-name>
   </property>
  </dependent-value-class>
  <dependent-value-class>
   <description>Credit Card</description>
   <class>com.hypothermic.example.Card</class>
   <property>
    <property-name>cardHolder</property-name>
    <column-name>CARD_HOLDER</column-name>
   </property>
   <property>
    <property-name>billingAddress</property-name>
    <column-name>ADD</column-name>
   </property>
   <property>
    <property-name>cardNumber</property-name>
    <column-name>CARD_NUMBER</column-name>
   </property>
  </dependent-value-class>
 </dependent-value-classes>
</jbosscmp-jdbc>



_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to