Donnerstag, 23. Juli 2009

Eclipse Galileo und Dali: entiy has no ID or EmbeddedId

Eclipse Galileo und Dali mit dem Build 20090621-0832 sind ein wenig zickig, wenn ein bestehendes Projekt um die Facet "Java Persistence" erweitert werden soll. Insbesonders, wenn M2 Eclipse im Spiel ist.

Die erste Falle ist, das nach Auswahl der Minimaleinstellung noch der exakte Pfad zur bestehenden persistence.xml (ohne META-INF) angegeben werden muss. Danach wurden erst einmal großzügig alle von M2 Eclipse gemachten Einstellungen zu Source Verzeichnissen entfernt. Durch Auswahl von "Update Project Configuration" konnten diese aber leicht wiederhergestellt werden.

Das nächste Problem war dann, das alle Entities, die ihr @ID Feld aus einer abstrakten Basisklasse bezogen mit der Fehlermeldung "entiy "foo" has no ID or EmbeddedId" verschönert wurden.

Der Fehler inklusive verschiedener Workarounds ist unter https://bugs.eclipse.org/bugs/show_bug.cgi?id=217192 beschrieben. Ebenfalls zum Erfolg kam ich aber durch simples Umstellen der Java Version auf 6 in der für "Java Persistence" notwendigen "Java" Facet.