Las anotaciones ElementCollection deben ir acompañadas por una anotación Column definida

Cuando un atributo se anota con @ElementCollection, se crea una tabla independiente para el atributo que incluye el ID y el valor del atributo. En OpenJPA, la columna para el atributo anotado se llama element, mientras que EclipseLink denomina la columna basándose en el nombre del atributo. Para conservar la compatibilidad con las tablas creadas con OpenJPA, añada una anotación @Column con el atributo name establecido en element.

Esta regla realiza un examen en búsqueda de anotaciones @ElementCollection que no tienen la anotación @Column con un atributo name. El arreglo rápido añade una anotación @Column o edita una anotación @Column existente que no tiene un atributo name.

Por ejemplo, la regla señala la anotación @ElementCollection en la clase de entidad de acceso de campo siguiente, porque no tiene una anotación @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;
}

El arreglo rápido añade la anotación @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;
}

Si desea más información sobre este problema y otros problemas de migración de OpenJPA a EclipseLink, consulte la guía Migración de OpenJPA a EclipseLink JPA: Correlaciones.