Skip Headers

Oracle TopLink Developer's Guide 10g Release 3 (10.1.3) B13593-01 |
| Home | Solution Area | Contents | Index

Previous | Next |

# Configuring Unique Primary Key

In variable one-to-one mappings, you can use a unique primary key in the source table to specify the correct target table, as illustrated in Figure 41-3. This section includes information on implementing class indicators.

Alternatively, you can use a class indicator to specify the correct target. See "Configuring Class Indicator" for more information.

## Understanding Unique Primary Key

As Figure 41-3 illustrates, the value of the foreign key in the source table (C_ID) mapped to the primary key of the target table is unique. No primary key values among the target tables are the same, so primary key values are not unique just in the table, but also among the tables.

Figure 41-3 Variable One-to-One Relationship with Unique Primary Key

Description of "Figure 41-3 Variable One-to-One Relationship with Unique Primary Key"

If there is no indicator stored in the source table, TopLink cannot determine to which target table the foreign key value is mapped. Therefore, TopLink reads through all the target tables until it finds an entry in one of the target tables. This is an inefficient way of setting up a relation model. The class indicator is much more efficient as it reduces the number of reads performed on the tables to get the data. In the class indicator method, TopLink knows exactly which target table to look into for the data.

The principles of defining such a variable class relationship are similar to defining class indicator variable one-to-one relationships, except:

- A type indicator field is not specified.

- The class indicator values are not specified.

The type indicator field and its values are not needed, because TopLink goes through all the target tables until data is finally found.

## Using TopLink Workbench

To specify the variable one-to-one mapping with a primary key, use this procedure:

1. Select the variable one-to-one mapping in the Navigator. Its attributes appear in the Editor.

2. Click the Class Indicator Info tab. The Class Indicator Info tab appears.

   Figure 41-4 Class Indicator Info Tab, Configuring Primary Key

   Description of "Figure 41-4 Class Indicator Info Tab, Configuring Primary Key"

Use the Class Indicator Field to select none.

Use the Indicator Type to select none.

Use the Indicator Value column to specify none.

After choosing the reference descriptor for the mapping, deselect the Include check boxes.

Note: You cannot deselect the value in the Class Indicator Field, unless the foreign key values in the source table are unique.

## Using Java

Example 41-1 illustrates how to define a variable one-to-one mapping using a unique primary key in Java code.

Example 41-1 Defining a variable one-to-one mapping using a unique primary key

    VariableOneToOneMapping variableOneToOneMapping = new VariableOneToOneMapping();
    variableOneToOneMapping.setAttributeName("contact");
    variableOneToOneMapping.setReferenceClass (Contact.class);
    variableOneToOneMapping.setForeignQueryKeyName ("C_ID", "id");
    variableOneToOneMapping.dontUseIndirection();
    variableOneToOneMapping.privateOwnedRelationship();