1

我想以这种方式保留我的 EMF 模型,以避免不必要地复制对象。为此,我尝试使用交叉引用,但它会抛出一个异常,指出引用不包含在资源中。

例如,让我们考虑一家公司及其 CEO。调用有两种情况

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

1-当containment设置为true时,只有最后一家公司存储对ceo的引用;2- 当包含设置为 false 时,抛出异常。

我该如何解决?

4

1 回答 1

1

在 EMF 中,容器引用的上限必须为 1。在您的情况下,这意味着 ceo1 只能包含在一家公司中。这就是为什么您的第一个方案以只有第二家公司存储对 CEO 的引用而结束的原因。

在第二种情况下,问题似乎也是一个遏制问题。如果您在公司和 CEO 之间使用非包含引用,则必须在包含您的 CEO 的对象中定义。最简单的方法是将其添加到资源内容resource.getContents().add(ceo1)中。但更好的设计解决方案会在其所属的类中添加对 CEO 的包含引用。

于 2015-09-03T09:45:33.963 回答