Anotace JoinColumn musí být použity s mapováními vztahů

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í.