EMF перекрестные ссылки и CDO

Я хочу сохранить свою модель EMF таким образом, чтобы избежать ненужного дублирования объектов. Для этого я пытаюсь использовать перекрестные ссылки, но при этом возникает исключение, говорящее о том, что ссылка не содержится в ресурсе.

Например, давайте рассмотрим компанию и ее генерального директора. Есть два сценария для звонков

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

1- когда для параметра "true" задано значение "true", только последняя компания хранит ссылку на главного исполнительного директора; 2- когда для локализации задано значение false, генерируется исключение.

Как это исправить?

1 ответ

В EMF ссылки на контейнеры должны иметь верхнюю границу 1. В вашем случае это означает, что ceo1 может содержаться только в одной компании. Вот почему ваш первый сценарий заканчивается только второй компанией, хранящей ссылку на генерального директора.

Во втором случае проблема, по-видимому, также является проблемой сдерживания. Если вы используете неразрывную ссылку между компанией и генеральным директором, вы должны определить, в каком объекте содержится ваш генеральный директор. Самый простой способ сделать это - добавить его в контент ресурса. resource.getContents().add(ceo1), Но лучшее дизайнерское решение добавило бы ссылку на генерального директора в своем классе.

Другие вопросы по тегам