Wenn eine Entität ein Attribut mit einer Annotation EmbeddedId definiert, darf die integrierbare Klasse
entsprechend der JPA-Spezifikation (Java Persistence API) kein Attribut mit einer Annotation
Id enthalten. Wenn sowohl die Annotation EmbeddedId als auch die Annotation
Id definiert ist, ignoriert OpenJPA die Annotation Id, wohingegen
EclipseLink eine Ausnahme auslöst.
Diese Regel erkennt Embeddable-Klassen, die Attribute mit einer Id-Anmerkung enthalten, dann kennzeichnet die Regel die Id-Anmerkungen je nachdem, ob sie eine Entität findet, die die einbettbare Klasse mit einer EmbeddedId annotation referenziert.
EmbeddedId-Annotation eine integrierbare Klasse referenziert, die eine Annotation
Id
hat, markiert die Regel die Id-Annotation als schwerwiegendes Problem. Die Id-Anmerkung muss entfernt werden.
EmbeddedId findet, markiert die Regel das Problem als Warnung. Sie können den Umfang der Analyse auf Attribute erweitern,
die mit EmbeddedId annotiert sind und auf die integrierbare Klasse verweisen könnten,
und den Scan erneut ausführen oder Sie können manuell sicherstellen, dass die integrierbare Klasse nicht von EmbeddedId-Annotationen referenziert wird.
In diesem Beispiel markiert die Regel die Annotation Id in der Klasse EmbeddableObject.
import javax.persistence.EmbeddedId; import javax.persistence.Entity; @Entity public class MainEntity { @EmbeddedId privat EmbeddableObject eo;}
import javax.persistence.Embeddable; import javax.persistence.Id; @Embeddable öffentliche Klasse EmbeddableObject { @Id private int field; ...}
Um das Problem zu beheben, entfernen Sie die @Id-Anmerkung und ihren Import.
import javax.persistence.Embeddable; import javax.persistence.Id; @Entity public Klasse MainEntity { @EmbeddedId privat EmbeddableObject eo;}
import javax.persistence.Embeddable; @Embeddable public class EmbeddableObject { private int field; ...}
Informationen zu diesem Problem und zu weiteren Problemen bei der Migration von OpenJPA auf EclipseLink finden Sie in der Veröffentlichung OpenJPA to EclipseLink JPA Migration: Mappings.