在 OpenJPA 中,当关系属性具有带有 @Column 注释的 @OneToOne 或 @ManyToOne 注释时,@Column 注释将被视为 @JoinColumn 注释。EclipseLink 抛出异常,表明实体类必须使用 @JoinColumn 而不是 @Column 来映射关系属性。
该规则将标记与 OneToOne 或 ManyToOne 注释一起使用的 @Column 注释。快速修订会将 @Column 注释替换为 @JoinColumm 注释。所有对应注释属性都将复制到 @JoinColum 注释。不会复制 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 to EclipseLink JPA Migration: Mappings 指南。