Quando um atributo é anotado com @ElementCollection,
uma tabela separada é criada para o atributo que inclui o ID e valor
do atributo.
No OpenJPA, a coluna para o atributo anotado é denominada element, enquanto o
EclipseLink nomeia a coluna com base no nome do atributo. Para permanecer compatível com
tabelas que foram criadas com OpenJPA, inclua uma anotação @Column com o atributo name configurado para element.
Esta regra faz a varredura para encontrar anotações @ElementCollection que não possuem a
anotação @Column com um atributo name.
A correção rápida inclui uma anotação @Column ou edita uma anotação
@Column existente que não possui um atributo name.
Por exemplo, a regra finaliza a anotação @ElementCollection na classe de
entidade de acesso a campo a seguir porque ela não possui uma anotação @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class ElementCollectionEntity { @Id private int id; @ElementCollection private List<String> listofStrings; } |
A correção rápida inclui a anotação @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class ElementCollectionEntity { @Id private int id; @ElementCollection @Column(name = "element") private List<String> listofStrings; } |
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.