在 OpenJPA,當關係屬性具有含 @Column 註釋的 @OneToOne 或 @ManyToOne 註釋時,@Column 註釋會被視為 @JoinColumn 註釋。EclipseLink 會擲出異常狀況,指出實體類別必須使用 @JoinColumn 而非 @Column 來對映關係屬性。
此規則會標示搭配 OneToOne 或 ManyToOne 註釋使用的 @Column 註釋。
自動修正將 @Column 註解取代為 @JoinColumn 註解。
所有對應的註釋屬性都會複製到 @JoinColumn 註釋。
javax.persistence.Column 元素 length、precision 和 scale 則不會複製。
例如,此規則會標示下列實體類別中的 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 移轉:對映手冊。