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.