CMP 1.x 用の関係は、EJB 1.x 仕様の規格には入っていません。 WebSphere® Application Server の拡張機能が、1.x の関係を処理するために作成されています。
EJB デプロイメント記述子エディターを使用して、 対象の EJB プロジェクトまたはモジュール内の 2 つの Enterprise Bean の間の関係を指定します。 EJB デプロイメント記述子エディターは、適切なファインダー・メソッドを生成して、 作成するすべての関係をサポートします。
ある CMP から別の CMP への関係を定義すると、 参照 CMP Bean にあるキー・フィールドを基にしたエクストラ CMP フィールドが、下方参照役割の所有 CMP Bean に追加されます (所有 CMP Bean の「外部キー」チェック・ボックスが選択されます)。
例えば、 会社が従業員に対して 1..N 関係を持っていて、それぞれに会社と従業員 (複数) の役割があるとします。会社役割は下方で、Company CMP Bean には "companyID" および "companyName" という名前のキー・フィールドがあります。従業員 Bean に自動的に追加される CMP フィールドは "company_companyID" および "company_companyName" です。これらのフィールドは、 「従業員」関係役割をサポートするために追加されたフィールドであるので、EJB エディターに隠れています。関係がまだ存在している間にこれらの CMP フィールドが ejb-jar.xml ファイルから除去された場合は、問題が発生します。
このほかの関係の例が、Rational® Application Developer に付属して出荷される AutoWorld 実例プロジェクトの中にあります。次の図は、車庫と車両の関係が、EJB デプロイメント記述子エディターの「関係」ページに、 どのように表示されるかを示しています。複数の車両が 1 つの車庫に収容できるので、 多重度は多数 (0..*) 対 1 (0..1) の関係を示します。
作成ウィザードは関係の UML ビューを表示し、フィールドは、UML モデルを基にして変更されます。関係が作成されると、 これらの 2 つの Bean 間のリンクを保守する際のランタイムをサポートするために、追加クラスが作成されます。また、追加メソッドが生成され、両方の Enterprise Bean の ホーム、リモート、および Bean のそれぞれのクラスに入れられます。生成されたリンク・クラスをコンパイルする必要があるために最初に関係が作成されたときに、EJB デプロイメント記述子エディターにコンパイル・エラーが発生します。これらのファイルには機械語コーディングがありますが、 ホーム、リモート、および Bean の各クラス内の変更はまだコンパイルされていません。 コンパイルは、プロジェクトが作成されるまでは行われません。 通常、これは、EJB デプロイメント記述子エディターが保管されるときに自動的に行われます。したがって、エディターが保管されるまで、コンパイル・エラーを見ることはありません。
2 つの Enterprise Bean (CMP 1.x) の間に関係を作成するには、 以下のようにします。