2015-08-06 3 views
1

Je souhaite conserver mon modèle EMF de manière à éviter de dupliquer des objets inutilement. Pour ce faire, j'essaie d'utiliser des références croisées, mais il émet une exception disant que la référence n'est pas contenue dans une ressource. Par exemple, considérons une société et son chef de la direction. Il y a deux scénarios pour les appels deRéférences croisées EMF et CDO

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

1- lorsque confinement est défini sur vrai, seule la dernière société stocke la référence au chef de la direction; 2- lorsque confinement est défini sur faux, l'exception est levée.

Comment résoudre ce problème?

Répondre

1

Dans la fonction EMF, les références de conteneur doivent avoir une limite supérieure de 1. Dans votre cas, cela signifie que ceo1 peut être contenu dans une seule société. C'est pourquoi votre premier scénario se termine avec seulement la deuxième société stockant la référence au chef de la direction.

Dans le second cas, le problème semble également être un problème de confinement. Si vous utilisez une référence de non-confinement entre l'entreprise et le PDG, vous devez définir dans quel objet votre PDG est contenu. Le moyen le plus simple de le faire est de l'ajouter au contenu de la ressource resource.getContents().add(ceo1). Mais une meilleure solution de conception ajouterait une référence de confinement au PDG dans la classe à laquelle il appartient.