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.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; @Entity clase pública UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; private List listField;}
Una corrección automática añadirá las anotaciones @Transient y la sentencia import.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity clase pública UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transient private ListaField;}
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.