追加する関係役割には、以下の特性がなければなりません。
さらに、キーを追加する必要があるエンタープライズ Bean は、 ルート Bean でなければなりません (スーパータイプからは継承しません)。 これは、継承された Bean はスーパータイプの主キー・クラスを使用する必要があるため、 キー・クラスの形状を変更できないからです。
次のタスクは 2 つのエンタープライズ Bean を参照します。 1 つには役割 (この Bean) が含まれ、1 つは役割内に表示されます (もう一方の Bean)。
このアクションにより、もう一方の Bean のキー・フィールドが、 この Bean のキー・クラスと Bean クラスの両方に追加されます。 役割が主キーに追加されると、アソシエーションも再生成されます。
アソシエーションから Bean を除去するときは注意が必要です。 役割の 1 つをいずれか 1 つの Bean のキーに追加した場合は、 キー内で役割を持つ Bean をもう一方の Bean より先に除去する必要があります。 データベースの制約により、こうする必要があります (役割がキーの一部でなくても同様です)。 しかし、データベースの制約がない場合でも、依然として問題が発生します。 例えば、1 対 1 のアソシエーションで Customer Bean と Address Bean を 持っている場合に、 Address Bean の顧客役割が外部キーを持ち、顧客役割が Address Bean の主キーであるとします。 先に Address Bean を除去しないで Customer Bean を除去した場合、アソシエーション保守コードは Address Bean の顧客役割外部キーを NULL に設定しているときに、Address Bean の主キーも NULL に設定しようとします。