Für Beziehungszuordnungen müssen JoinColumn-Annotationen verwendet werden

Wenn in OpenJPA ein Beziehungsattribut eine @OneToOne- oder eine @ManyToOne-Annotation mit einer @Column-Annotation hat, wird die @Column-Annotation als @JoinColumn-Annotation behandelt. EclipseLink löst eine Ausnahme aus, die anzeigt, dass die Entitätsklasse @JoinColumn anstelle von @Column verwenden muss, um ein Beziehungsattribut zuzuordnen.

Diese Regel markiert @Column-Annotationen, die mit OneToOne- und ManyToOne-Annotationen verwendet werden. Eine automatische Korrektur ersetzt die @Column-Anmerkung durch eine @JoinColumn bemerkung ersetzt. Alle entsprechenden Annotationsattribute werden in die @JoinColumn-Annotation kopiert. Die javax.persistence.Column-Elemente length, precision und scale werden nicht kopiert.

Diese Regel markiert beispielsweise die Column-Annotation in der folgenden Entitätsklasse:


import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.Id
Importieren javax.persistence.ManyToOne;

@Entity
Allgemein zugängliche Klasse TransactionEntity {
    @Id private int id; private long transaktionsnummer; private double amount; @ManyToOne
    @Column(name = "account ")
    privates Konto}

Eine automatische Korrektur ersetzt die @Column-Anmerkung durch eine @JoinColumn annotation und liefert die entsprechenden Importe.


import javax.persistence.Entity;
import javax.persistence.Id
Importieren javax.persistence.ManyToOne;
Importieren javax.persistence.JoinColumn;

@Entity
Allgemein zugängliche Klasse TransactionEntity {
    @Id private int id; private long transaktionsnummer; private double amount; @ManyToOne
    @JoinColumn(name = "account ")
    privates Konto}

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.