Hi,
ich schlage mich gerade etwas mit EMF rum, bin nun aber auf ein hässliches Problem mit den EKeys gestoßen, das ich irgendwie nicht gelöst kriege.
Ich habe zwei Klassen, A und B. A hat eine 0...* Referenz auf B (wird zu einer EList) und B hat eine 0...1 Referenz auf A.
Nun habe ich der 0...* Referenz (Elist) gesagt, als EKey soll das Attribut "name" der Klasse B verwendet werden. Damit kann ich die Instanz der Klasse ja eindeutig identifizieren. Meine Hoffnung war, das wenn ich nun zwei Objekte von Klasse B habe, die den gleichen Namen haben und in meine EList packe, das der generierte Code das erkennt und dann irgendein Event oder eine Exception wirft. Aber stattdessen wird von der 2ten Instanz der Namen in "null" geändert und so in die Liste aufgenommen.
Gibt es eine Möglichkeit in EMF einzustellen was passieren soll ohne im generierten Code rumzupfuschen?
//edit: Ok ich habe mal noch etwas weiter getestet. Der name wird beim einfügen auf "null" gesetzt wegen dieser Zeile in Klasse B:
Dies kann ich zwar beliebig umschreiben, aber wenn ich nun 3 Objekte habe, die alle den gleichen Namen haben passiert folgendes:
Objekt 1 wird genommen.
Objekt 2 da kollidiert der name mit dem von Objekt 1 und es wird auf NAME_EDEFAULT gesetzt.
Objekt 3 kollidiert mit Objekt 1 und wird ebenfalls auf NAME_EDEFAULT gesetzt. Und schon ist die eindeutige Identifikation dahin. Eine Exception oder ähnliches fänd ich echt toller :/
Gruß
Websl
ich schlage mich gerade etwas mit EMF rum, bin nun aber auf ein hässliches Problem mit den EKeys gestoßen, das ich irgendwie nicht gelöst kriege.
Ich habe zwei Klassen, A und B. A hat eine 0...* Referenz auf B (wird zu einer EList) und B hat eine 0...1 Referenz auf A.
Nun habe ich der 0...* Referenz (Elist) gesagt, als EKey soll das Attribut "name" der Klasse B verwendet werden. Damit kann ich die Instanz der Klasse ja eindeutig identifizieren. Meine Hoffnung war, das wenn ich nun zwei Objekte von Klasse B habe, die den gleichen Namen haben und in meine EList packe, das der generierte Code das erkennt und dann irgendein Event oder eine Exception wirft. Aber stattdessen wird von der 2ten Instanz der Namen in "null" geändert und so in die Liste aufgenommen.
Gibt es eine Möglichkeit in EMF einzustellen was passieren soll ohne im generierten Code rumzupfuschen?
//edit: Ok ich habe mal noch etwas weiter getestet. Der name wird beim einfügen auf "null" gesetzt wegen dieser Zeile in Klasse B:
Java:
protected static final String NAME_EDEFAULT = null;
Dies kann ich zwar beliebig umschreiben, aber wenn ich nun 3 Objekte habe, die alle den gleichen Namen haben passiert folgendes:
Objekt 1 wird genommen.
Objekt 2 da kollidiert der name mit dem von Objekt 1 und es wird auf NAME_EDEFAULT gesetzt.
Objekt 3 kollidiert mit Objekt 1 und wird ebenfalls auf NAME_EDEFAULT gesetzt. Und schon ist die eindeutige Identifikation dahin. Eine Exception oder ähnliches fänd ich echt toller :/
Gruß
Websl
Zuletzt bearbeitet: