ElementCollection-Annotationen müssen eine entsprechende definierte Column-Annotation haben

Wenn ein Attribut mit @ElementCollection annotiert ist, wird eine separate Tabelle für das Attribut erstellt, die die Attribut-ID und den Attributwert enthält. In OpenJPA hat die Spalte für das annotierte Attribut den Namen element, wohingegen EclipseLink die Spalte basierend auf dem Namen des Attributs benennt. Zur Gewährleistung der Kompatibilität mit Tabellen, die mit OpenJPA erstellt wurden, fügen Sie eine Annotation @Column mit dem Attribut name, das auf element gesetzt ist, hinzu.

Diese Regel sucht nach @ElementCollection-Annotationen, die keine Annotation @Column mit einem Attribut name haben. Die Schnellkorrektur fügt eine @Column-Annotation hinzu oder bearbeitet eine vorhandene @Column-Annotation, die kein Attribut name hat.

Die Regel markiert beispielsweise die Annotation @ElementCollection in der folgenden Entitätsklasse für Feldzugriff, weil sie keine Annotation @Column hat.

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;
}

Diese Schnellkorrektur fügt die Annotation @Column hinzu.

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;
}

Informationen zu diesem Problem und zu weiteren Problemen bei der Migration von OpenJPA auf EclipseLink finden Sie in der Veröffentlichung OpenJPA to EclipseLink JPA Migration: Mappings.