No OpenJPA, os atributos que herdam da interface java.util.Collection<E> não
são um tipo persistente padrão, portanto, estes atributos não são persistidos a menos que eles
sejam anotados.
O EclipseLink tem um comportamento padrão diferente e tenta persistir estes atributos para o
banco de dados.
Para manter o comportamento do OpenJPA e ignorar atributos de coleção anotados, inclua a anotação javax.persistence.Transient neste atributos no EclipseLink.
Esta regra sinaliza atributos sem nenhuma anotação JPA que herdam da interface java.util.Collection<E>, incluindo as subinterfaces a seguir:
Na classe de entidade a seguir, os atributos e collectionField e
listField são sinalizados pela regra.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; @Entity classe pública UnannotatedCollectionEntidade { @Id private int id; private Collection collectionField; private Lista listField;}
Uma correção automática adicionará as anotações @Transient e a instrução de importação.
import java.util.Collection; import java.util.List; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity classe pública UnannotatedCollectionEntidade { @Id private int id; @Transient private Collection CollectionField; @Transient private List listField;}
Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.