En OpenJPA, los atributos que se heredan de la interfaz java.util.Collection<E> no son de un tipo persistente predeterminado, así pues, estos atributos no se persisten, a menos que se hayan anotado.
EclipseLink tiene un comportamiento predeterminado diferente e intenta persistir estos atributos en la base de datos.
Para conservar el mantenimiento de OpenJPA de ignorar atributos de colección sin anotar, añada la anotación javax.persistence.Transient a estos atributos en EclipseLink.
Esta regla señala atributos sin anotaciones JPA que se heredan de la interfaz java.util.Collection<E>, incluidas las interfaces secundarias siguientes:
En la clase de entidad siguiente, los atributos collectionField y listField se señalan mediante la regla.
importar java.util.Collection; importar java.util.List; import javax.persistence.Entity; importar javax.persistence.Id; @Entidad public class UnannotatedCollectionEntity { @Id privado int id; private Collection colecciónCampo; privado List listField; }
Una corrección automática añadirá las anotaciones @Transient y la sentencia import.
importar java.util.Collection; importar java.util.List; import javax.persistence.Entity; import javax.persistence.Id; importar javax.persistence.Transient; @Entidad public class UnannotatedCollectionEntity { @Id privado int id; @Transient private Colección colecciónCampo; @Transient privado List listField; }
Si desea más información sobre este problema y otros problemas de migración de OpenJPA a EclipseLink, consulte la guía Migración de OpenJPA a EclipseLink JPA: Correlaciones.