Î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.
O corecție automată va înlocui adnotarea @Column cu o @JoinColumn adnotare.
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 clasă publică TransactionEntity { @Id int privat id; lung privat transactionNumber; dublu privat amount; @ManyToOne @Column(name="account") privat Account account; }
O corecție automată va înlocui adnotarea @Column cu o @JoinColumn și furnizează importurile corespunzătoare.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity clasă publică TransactionEntity { @Id int privat id; lung privat transactionNumber; dublu privat amount; @ManyToOne @JoinColumn(name="account") privat 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.