OpenJPA erstellt eine separate Tabelle für Sammlungsattribute, die mit org.apache.openjpa.persistence.PersistentCollection annotiert sind.
Um in EclipseLink dasselbe Verhalten zu erreichen, ersetzen Sie diese Annotationen gemäß der JPA-Spezifikation durch die Annotationen @ElementCollection und @Column.
Wenn Sie die Annotation @PersistentCollection entfernen und die Annotationen
@ElementCollection und @Column nicht hinzufügen, behandelt EclipseLink das Feld als BLOB und
versucht, eine Spalte für die Daten in der Entitätstabelle zu erstellen.
Diese Regel sucht nach org.apache.openjpa.persistence.PersistentCollection-Annotationen, damit Sie sie manuell migrieren können.
Führen Sie die folgenden Schritte aus, um Annotationen zu migrieren:
@org.apache.openjpa.persistence.PersistentCollection durch folgende Annotationen:
@javax.persistence.ElementCollection @javax.persistence.Column(name="element")Wenn es die Annotation
@Column im Attribut bereits gibt, dürfen Sie weder eine weitere Annotation hinzufügen noch den Namen ändern.
Diese Regel markiert beispielsweise die Annotation @PersistentCollection in der folgenden Entitätsklasse:
import javax.persistence.Entity; import javax.persistence.Id; import org.apache.openjpa.persistence.PersistentCollection; @Entity public class IntArrayEntity{ @Id private int id; @PersistentCollection private int[] arrayOfInts; } |
Zum Migrieren dieser Entität ersetzen Sie die Annotation und ändern Sie das int-Array in eine Liste von Integer-Objekten: List<Integer>.
import javax.persistence.Column; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity public class IntArrayEntity{ @Id private int id; @ElementCollection @Column(name = "element") private List<Integer> arrayOfInts; } |
Informationen zu diesem Problem bei der Migration von OpenJPA auf EclipseLink finden Sie im Handbuch Migration from OpenJPA to EclipseLink JPA: Extended Functionality.