V rozhraní OpenJPA platí, že pokud má atribut vztahu anotaci @OneToOne nebo @ManyToOne s anotací @Column, bude anotace @Column považována za anotaci @JoinColumn. EclipseLink generuje výjimku, která označuje, že třída entity musí k mapování atributu vztahu používat @JoinColumn místo @Column.
Toto pravidlo značí anotace @Column, které se používají s anotacemi OneToOne nebo ManyToOne.
Automatická oprava nahradí anotaci @Column anotací @JoinColumn anotací.
Všechny odpovídající atributy anotace se zkopírují do anotace @JoinColumn.
Prvky javax.persistence.Column length, precision a scale se nezkopírují.
Toto pravidlo například značí anotaci Column v následující třídě entity:
import javax.persistence.Entity; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity veřejná třída TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @Column(name = "account ") soukromý účet;}
Automatická oprava nahradí anotaci @Column anotací @JoinColumn anotací a zajistí příslušné importy.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity veřejná třída TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @JoinColumn(name = "account ") soukromý účet;}
Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.