Adnotacji JoinColumn należy używać z odwzorowaniami relacji

W implementacji OpenJPA, gdy atrybut relacji ma adnotację @OneToOne albo adnotację @ManyToOne z adnotacją @Column, adnotacja @Column jest traktowana jako adnotacja @JoinColumn. Interfejs EclipseLink zgłasza wyjątek wskazujący, że klasa jednostki musi używać adnotacji @JoinColumn zamiast @Column do odwzorowania atrybutu relacji.

Ta reguła powoduje oznaczenie adnotacji @Column, które są używane z adnotacjami OneToOne lub ManyToOne. Zautomatyzowana poprawka zastąpi adnotację @Column adnotacją @JoinColumn adnotacja. Wszystkie odpowiednie atrybuty adnotacji są kopiowane do adnotacji @JoinColumn. Elementy length, precision i scale klasy javax.persistence.Column nie są kopiowane.

Na przykład reguła ta powoduje oznaczenie adnotacji Column w następującej klasie jednostki:


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

@Entity
klasa publiczna TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @Column(name = "konto ")
    Konto prywatne ; }

Zautomatyzowana poprawka zastąpi adnotację @Column adnotacją @JoinColumn i zapewni odpowiedni import.


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

@Entity
klasa publiczna TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @JoinColumn(name = "konto ")
    Konto prywatne ; }

Informacje na ten temat oraz na temat innych problemów z migracją interfejsu OpenJPA do interfejsu EclipseLink zawiera podręcznik Migracja interfejsu JPA ze środowiska OpenJPA do EclipseLink: Odwzorowania.