O OpenJPA cria uma tabela separada para atributos de coleção que são anotados com
org.apache.openjpa.persistence.PersistentCollection. Para ter o mesmo
comportamento no EclipseLink, substitua essas anotações pelas anotações @ElementCollection e @Column
conforme definido na especificação JPA. Se você remover a anotação @PersistentCollection
e não incluir as anotações @ElementCollection e @Column,
o EclipseLink tratará o campo como um BLOB e
tentará criar uma coluna para os dados na tabela da entidade.
Essa regra varre as anotações org.apache.openjpa.persistence.PersistentCollection
para que seja possível migrá-las manualmente.
Para migrar as anotações, execute as etapas a seguir:
@org.apache.openjpa.persistence.PersistentCollection por
@javax.persistence.ElementCollection @javax.persistence.Column(name="element")Se já houver uma anotação
@Column no atributo,
não inclua outra nem mude o nome.
Por exemplo, essa regra sinaliza a anotação @PersistentCollection
na classe de entidade a seguir:
import javax.persistence.Entity; import javax.persistence.Id; import org.apache.openjpa.persistence.PersistentCollection; @Entity public class IntArrayEntity{ @Id private int id; @PersistentCollection private int[] arrayOfInts; } |
Para migrar essa entidade, substitua a anotação e mude a matriz int
para uma lista de objetos Integer: List<Integer>.
import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class IntArrayEntity{ @Id private int id; @ElementCollection @Column(name = "element") private List<Integer> arrayOfInts; } |
Para obter informações sobre este problema de migração do OpenJPA para EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: funcionalidade estendida.