Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
Difference between revisions of "Configuring a Relational Many-to-Many Mapping (ELUG)"
m |
|||
Line 19: | Line 19: | ||
|- align="left" valign="top" | |- align="left" valign="top" | ||
| id="r2c1-t2" headers="r1c1-t2" align="left" | | | id="r2c1-t2" headers="r1c1-t2" align="left" | | ||
− | + | [[Configuring%20a%20Relational%20Mapping%20(ELUG)#Configuring Reference Descriptor|Configuring Reference Descriptor]] | |
| headers="r2c1-t2 r1c2-t2" align="left" | | | headers="r2c1-t2 r1c2-t2" align="left" | | ||
[[Image:support.gif|Supported]] | [[Image:support.gif|Supported]] | ||
Line 26: | Line 26: | ||
|- align="left" valign="top" | |- align="left" valign="top" | ||
| id="r3c1-t2" headers="r1c1-t2" align="left" | | | id="r3c1-t2" headers="r1c1-t2" align="left" | | ||
− | + | [[Configuring%20a%20Mapping%20(ELUG)#Configuring Method or Direct Field Accessing at the Mapping Level|Method or direct field access ]] | |
| headers="r3c1-t2 r1c2-t2" align="left" | | | headers="r3c1-t2 r1c2-t2" align="left" | | ||
[[Image:support.gif|Supported]] | [[Image:support.gif|Supported]] | ||
Line 89: | Line 89: | ||
|- align="left" valign="top" | |- align="left" valign="top" | ||
| id="r12c1-t2" headers="r1c1-t2" align="left" | | | id="r12c1-t2" headers="r1c1-t2" align="left" | | ||
− | + | [[Configuring%20a%20Relational%20Mapping%20(ELUG)#Configuring Table and Field References (Foreign and Target Foreign Keys)|Table and field references ]] (Source) | |
| headers="r12c1-t2 r1c2-t2" align="left" | | | headers="r12c1-t2 r1c2-t2" align="left" | | ||
[[Image:support.gif|Supported]] | [[Image:support.gif|Supported]] | ||
Line 96: | Line 96: | ||
|- align="left" valign="top" | |- align="left" valign="top" | ||
| id="r13c1-t2" headers="r1c1-t2" align="left" | | | id="r13c1-t2" headers="r1c1-t2" align="left" | | ||
− | + | [[Configuring%20a%20Relational%20Mapping%20(ELUG)#Configuring Table and Field References (Foreign and Target Foreign Keys)|Table and field references ]] (Target) | |
| headers="r13c1-t2 r1c2-t2" align="left" | | | headers="r13c1-t2 r1c2-t2" align="left" | | ||
[[Image:support.gif|Supported]] | [[Image:support.gif|Supported]] |
Revision as of 08:18, 17 December 2007
Contents
This section describes the various components that you must configure in order to use a relational many-to-many mapping.
For information on how to configure EclipseLink mappings options common to two or more mapping types, see Configuring a Mapping.
For information on how to create EclipseLink mappings, see Creating a Mapping.
This table lists the configurable options for a relational many-to-many mapping.
Option to Configure | Workbench | Java |
---|---|---|
Table and field references (Source) |
||
Table and field references (Target) |
||
This example shows how to create a many-to-many mapping and add it to a descriptor using Java code.
Many-to-Many Mapping
public void customize(ClassDescriptor descriptor) { ManyToManyMapping mapping = new ManyToManyMapping(); // configure mapping ... // add mapping to descriptor descriptor.addMapping(mapping); }
For more information, see the following:
For information on using JPA to configure many-to-many mappings, see @ManyToMany.
Configuring a Relation Table
The relation table contains the columns for the primary keys of the source table and target table involved in the many-to-many mapping. You must create this table in the database before completing the mapping. See Using Databases for information on creating database tables.
In the Many-to-many Relationships figure, the PROJ_EMP table serves as the relation table between the PROJECT and EMPLOYEE tables.
How to Configure a Relation Table Using Workbench
To select a relation table for a mapping, use this procedure:
- Select the mapped attribute in the Navigator. Its properties appear in the Editor.
- Click the General tab. The General tab appears.
Table Reference Tab, Relation Table Option - Use the Relation Table field to select a database table to define this mapping.
How to Configure a Relation Table Using Java
Many-to-many mappings represent the relationships between a collection of source objects and a collection of target objects. This requires an intermediate table that manages the associations between the source and target records.
Many-to-many mappings are instances of the ManyToManyMapping class and requires the following elements:
- The attribute mapped, set by using the setAttributeName method.
- The reference class, set by using the setReferenceClass method.
- The relation table, set by using the setRelationTableName() method.
- The foreign key information (for noncomposite target primary keys), which you specify by calling the setSourceRelationKeyFieldName and setTargetRelationKeyFieldName methods.
- The foreign key information if the source or target primary keys are composite, which you specify by sending the addSourceRelationKeyFieldName or addTargetRelationKeyFieldName methods.
Configuring a Relational Table
public void customize(ClassDescriptor descriptor) { // In the Employee class, create the mapping that references Project class ManyToManyMapping manyToManyMapping = new ManyToManyMapping(); manyToManyMapping.setAttributeName("projects"); manyToManyMapping.setReferenceClass(Project.class); // Configure the relational table manyToManyMapping.setRelationTableName("PROJ_EMP"); manyToManyMapping.setSourceRelationKeyFieldName ("EMPID"); manyToManyMapping.setTargetRelationKeyFieldName ("PROJID"); // Add mapping to descriptor descriptor.addMapping(manyToManyMapping); }
In addition to the API that Configuring a Relational Table illustrates, other common API for use with many-to-many mappings include the following:
- useBasicIndirection: implements EclipseLink value holder indirection.
- useTransparentCollection: if you use transparent indirection, this element places a special collection in the source object's attribute.
- dontUseIndirection: implements no indirection.
For more information about the available methods for ManyToManyMapping, see the EclipseLink API Reference.