Le annotazioni ElementCollection devono essere accompagnate da un'annotazione Column definita

Quando un attributo viene annotato con @ElementCollection, viene creata una tabella separata per l'attributo che include l'ID attributo ed il valore. In OpenJPA, la colonna dell'attributo annotato viene denominata element, mentre EclipseLink denomina la colonna in base al nome dell'attributo. Per mantenere la compatibilità con le tabelle create con OpenJPA, aggiungere un'annotazione @Column con l'attributo nome impostato su element.

Questa regola ricerca le annotazioni @ElementCollection che non hanno l'annotazione @Column con un attributo name. La correzione rapida aggiunge un'annotazione @Column oppure modifica l'annotazione @Column che non ha un attributo name.

Ad esempio, la regola contrassegna l'annotazione @ElementCollection nella classe dell'entità di accesso del campo seguente, perché non ha un'annotazione @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;
}

La correzione rapida aggiunge l'annotazione @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;
}

Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.