Nicht annotierte Collection-Attribute erfordern eine Annotation Transient

In OpenJPA sind Attribute, die Einstellungen von der Schnittstelle java.util.Collection<E> übernehmen, standardmäßig nicht persistent und werden deshalb nicht persistent gespeichert, sofern sie nicht annotiert sind. EclipseLink hat ein anderes Standardverhalten und versucht, diese Attribute persistent in der Datenbank zu speichern. Wenn Sie das OpenJPA-Verhalten, bei dem nicht annotierte Collection-Attribute 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 Einstellungen von der Schnittstelle java.util.Collection<E> und den folgenden untergeordneten Schnittstellen übernehmen:

in der folgenden Entitätsklasse werden die Attribute collectionField und listField von der Regel markiert.

import java.util.Collection; importieren java.util.List; importieren javax.persistence.Entity; importieren javax.persistence.Id; @Entität public class UnannotatedCollectionEntity { @Id private int id; private Sammlung collectionField; private Liste listField; }

Bei einer automatischen Korrektur werden die @Transient-Anmerkungen und die Importanweisung hinzugefügt.

import java.util.Collection; importieren java.util.List; importieren javax.persistence.Entity; importieren javax.persistence.Id; importieren javax.persistence.Transient; @Entität public class UnannotatedCollectionEntity { @Id private int id; @Transient private Sammlung collectionField; @Transient private Liste listField; }

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.