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.
Eine automatische Korrektur fügt dem Attribut die @Transient-Anmerkung hinzu.
In der folgenden Entitätsklasse wird das Feld entityReference von der Regel markiert.
import javax.persistence.Entity; import javax.persistence.Id @Entity Allgemein zugängliche Klasse EntityA { @Id private int id; private EntityB entityReference;}
import javax.persistence.Entity; import javax.persistence.Id @Entity Allgemein zugängliche Klasse EntityB { @Id private int id;}
Bei einer automatischen Korrektur werden die @Transient-Anmerkungen und die Importanweisung hinzugefügt.
import javax.persistence.Entity; import javax.persistence.Id import javax.persistence.Transient; @Entity Allgemein zugängliche Klasse 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.