JBoss.org Community Documentation
Foreign key mapping is the most common mapping style for one-to-one and one-to-many relationships, but is not allowed for many-to many relationships. The foreign key mapping element is simply declared by adding an empty foreign key-mapping
element to the ejb-relation
element.
As noted in the previous section, with a foreign key mapping the key-fields
declared in the ejb-relationship-role
are added to the table of the related entity. If the key-fields
element is empty, a foreign key will not be created for the entity. In a one-to-many relationship, the many side (Gangster
in the example) must have an empty key-fields
element, and the one side (Organization
in the example) must have a key-fields
mapping. In one-to-one relationships, one or both roles can have foreign keys.
The foreign key mapping is not dependent on the direction of the relationship. This means that in a one-to-one unidirectional relationship (only one side has an accessor) one or both roles can still have foreign keys. The complete foreign key mapping for the Organization-Gangster
relationship is shown below with the foreign key elements highlighted in bold:
<jbosscmp-jdbc> <relationships> <ejb-relation> <ejb-relation-name>Organization-Gangster</ejb-relation-name> <foreign-key-mapping/> <ejb-relationship-role> <ejb-relationship-role-name>org-has-gangsters</ejb-relationship-role-name> <key-fields> <key-field> <field-name>name</field-name> <column-name>organization</column-name> </key-field> </key-fields> </ejb-relationship-role> <ejb-relationship-role> <ejb-relationship-role-name>gangster-belongs-to-org</ejb-relationship-role-name> <key-fields/> </ejb-relationship-role> </ejb-relation> </relationships> </jbosscmp-jdbc>