JoinColumn 註釋必須搭配關係對映使用

在 OpenJPA,當關係屬性具有含 @Column 註釋的 @OneToOne@ManyToOne 註釋時,@Column 註釋會被視為 @JoinColumn 註釋。EclipseLink 會擲出異常狀況,指出實體類別必須使用 @JoinColumn 而非 @Column 來對映關係屬性。

此規則會標示搭配 OneToOneManyToOne 註釋使用的 @Column 註釋。 自動修正將 @Column 註解取代為 @JoinColumn 註解。 所有對應的註釋屬性都會複製到 @JoinColumn 註釋。 javax.persistence.Column 元素 lengthprecisionscale 則不會複製。

例如,此規則會標示下列實體類別中的 Column 註釋:


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 ")
    專用 帳戶;}

自動修正將 @Column 註解取代為 @JoinColumn 註解,並提供適當的匯入。


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 ")
    專用 帳戶;}

如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。