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. 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.