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.

import java.util.Collection;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class UnannotatedCollectionEntity {
    @Id
    private int id;
   
    private Collection collectionField;
    private List listField;

}

A correção rápida inclui as anotações @Transient e a instrução import.

import java.util.Collection;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

@Entity
public class UnannotatedCollectionEntity {
    @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.