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