Nicht annotierte Entitätsattribute erfordern eine Annotation Transient

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.