我希望以这种方式保留我的EMF模型,以避免不必要地重复对象。为此,我尝试使用交叉引用,但它抛出一个Exception,表示该引用未包含在资源中。
例如,让我们考虑一家公司及其首席执行官。
的调用有两种情况company1.setCEO(ceo1);
company2.setCEO(ceo1);
1-当containment设置为true时,只有最后一家公司存储对ceo的引用; 2-当containment设置为false时,抛出异常。
我该如何解决这个问题?
答案 0 :(得分:1)
在EMF中,容器引用的上限必须为1.在您的情况下,这意味着ceo1只能包含在一个公司中。这就是为什么你的第一个场景结束时只有第二家公司存储了对ceo的引用。
在第二种情况下,问题似乎也是一个遏制问题。如果您在公司和首席执行官之间使用非遏制参考,则必须定义您的CEO是否包含在内。最简单的方法是将其添加到资源内容resource.getContents().add(ceo1)
。但是,更好的设计解决方案会在其所属的类中为CEO添加遏制参考。