În OpenJPA, când un atribut relaţie are fie o adnotare @OneToOne sau o @ManyToOne
cu o adnotare @Column, adnotarea @Column este tratată ca o
adnotare @JoinColumn. EclipseLink aruncă
o excepţie care indică faptul că clasa entitate trebuie să folosească @JoinColumn în loc de
@Column pentru a mapa un atribut relaţie.
Această regulă semnalează adnotările @Column care sunt utilizate cu adnotările OneToOne
sau ManyToOne.
Corecţia rapidă înlocuieşte adnotarea @Column cu o adnotare @JoinColumn.
Toate atributele de adnotare corespunzătoare sunt copiate la adnotarea @JoinColumn.
Elementele javax.persistence.Column length, precision,
şi scale nu sunt copiate.
De exemplu, această regulă semnalează adnotarea Column în următoarea clasă entitate:
import javax.persistence.Entity; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @Column(name="account") private Account account; } |
Corecţia rapidă înlocuieşte adnotarea @Column cu o adnotare @JoinColumn şi furnizează importurile corespunzătoare.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @JoinColumn(name="account") private Account account; } |
Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.