V rozhraní OpenJPA nejsou atributy, které dědí z rozhraní java.util.Collection<E>, výchozí trvalý typ, takže tyto atributy nejsou trvalé, pokud nejsou anotovány.
EclipseLink má jiné výchozí chování a snaží se tyto atributy trvale uchovat v databázi.
Chcete-li zachovat chování OpenJPA v ignorování neanotovaných atributů kolekcí, přidejte do těchto atributů v EclipseLink anotaci javax.persistence.Transient.
Toto pravidlo značí atributy, které nemají žádné anotace JPA, které dědí z rozhraní java.util.Collection<E>, včetně následujících podrozhraní:
V následující třídě entity jsou atributy collectionField a listField označeny pravidlem.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; @Entity veřejná třída UnannotatedCollectionentita { @Id private int id; private Collection collectionField; private List listField;}
Automatická oprava přidá anotace @Transient a příkaz import.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity veřejná třída UnannotatedCollectionentita { @Id private int id; @Transient private Collection collectionField; @Transient private listField;}
Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.