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. Eine automatische Korrektur fügt eine @Column-Anmerkung hinzu oder bearbeitet eine vorhandene @Column-Anmerkung, die kein name-Attribut 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
Importieren javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id

@Entity
public class ElementCollectionEntity {@Id private int id; @ElementCollection private List <Zeichenfolge> listofStrings;}

Eine automatische Korrektur wird die @Column-Anmerkung hinzufügen.

import java.util.List
Importieren 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 <Zeichenfolge> 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.