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 Entität public class UnannotatedCollection{ @Id private int id; private Collection collectionField; private List listField;}
Bei einer automatischen Korrektur werden die @Transient-Anmerkungen und die Importanweisung hinzugefügt.
import java.util.Collection import java.util.List import javax.persistence.Entity; import javax.persistence.Id import javax.persistence.Transient; @Entity Entität public class UnannotatedCollection{ @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.