在 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") private Account 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") private Account account; } |
如需此問題以及其他 OpenJPA 至 EclipseLink 移轉問題的相關資訊,請參閱 OpenJPA 至 EclipseLink JPA 移轉:對映手冊。