Os atributos de coleção não anotados requerem uma anotação Transiente

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.

importar java.util.Collection; importar java.util.List; importar javax.persistence.Entity; importar javax.persistence.Id; @Entity public class UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; lista privada listField; }

Uma correção automática adicionará as anotações @Transient e a instrução de importação.

importar java.util.Collection; importar java.util.List; importar javax.persistence.Entity; importar javax.persistence.Id; importar javax.persistence.Transient; @Entity public class UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transiente private List listField; }

Para obter informações sobre este problema e outros problemas de migração do OpenJPA para o EclipseLink, veja o guia OpenJPA to EclipseLink JPA Migration: Mappings.