In OpenJPA werden Attribute, die selbst Entitätsklassen sind, standardmäßig nicht persistent gespeichert.
EclipseLink hat ein anderes Standardverhalten und versucht, diese Attribute persistent in der Datenbank zu speichern.
Wenn Sie das OpenJPA-Verhalten, bei dem nicht annotierte Entitätsattribute ignoriert werden, beibehalten möchten,
fügen Sie diesen Attributen in EclipseLink die Annotation
javax.persistence.Transient hinzu.
Diese Regel markiert Attribute ohne JPA-Annotationen, die Entitätsklassen sind.
Wenn das Tooll die referenzierte Klasse nicht findet, protokolliert sie eine Warnung im
Eclipse-Fehlerprotokoll. Das Tool findet die Klasse möglicherweise nicht, wenn abhängige Projekte oder Klasse
nicht zugänglich sind oder wenn Kompilierungsfehler vorliegen.
Die Schnellkorrektur fügt dem Attribut die Annotation @Transient hinzu.
In der folgenden Entitätsklasse wird das Feld entityReference von der Regel markiert.
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; private EntityB entityReference; } |
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityB { @Id private int id; } |
Die Schnellkorrektur fügt die @Transient-Annotationen und die import-Anweisung hinzu.
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference; } |
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.