As anotações ElementCollection devem ser acompanhadas por uma anotação de Coluna definida

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.