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; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; private List listField; } |
Die Schnellkorrektur fügt die @Transient-Annotationen und die import-Anweisung hinzu.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity public class UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transient private List 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.