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.