1

不必要にオブジェクトを複製しないように、EMF モデルを保持したいと考えています。そのために相互参照を使用しようとしていますが、参照がリソースに含まれていないことを示す例外がスローされます。

たとえば、会社とその CEO について考えてみましょう。の呼び出しには 2 つのシナリオがあります。

company1.setCEO(ceo1);
company2.setCEO(ceo1);

1- 包含が true に設定されている場合、最後の会社のみが CEO への参照を保存します。2- 包含が false に設定されている場合、例外がスローされます。

これを修正するにはどうすればよいですか?

4

1 に答える 1

1

EMF では、コンテナー参照の上限は 1 である必要があります。この場合、ceo1 は 1 つの会社にのみ含めることができます。そのため、最初のシナリオは、CEO への参照を保存する 2 番目の会社のみで終了します。

2番目のケースでは、問題は封じ込めの問題でもあるようです。会社と CEO の間に非包含参照を使用している場合は、CEO が含まれるオブジェクトを定義する必要があります。これを行う最も簡単な方法は、リソースのコンテンツに追加することですresource.getContents().add(ceo1)。しかし、より優れた設計ソリューションでは、CEO が属するクラスに CEO への包含参照を追加します。

于 2015-09-03T09:45:33.963 に答える