在 OpenJPA 中,当关系属性具有带有 @Column 注释的 @OneToOne 或 @ManyToOne 注释时,@Column 注释将被视为 @JoinColumn 注释。EclipseLink 抛出异常,表明实体类必须使用 @JoinColumn 而不是 @Column 来映射关系属性。
该规则将标记与 OneToOne 或 ManyToOne 注释一起使用的 @Column 注释。
自动修复功能会将 @Column 注解替换为 @JoinColumn 注释。
所有对应注释属性都将复制到 @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 公用类 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 公用类 TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @JoinColumn(name = "account ") 专用 帐户;}
有关此问题和其他 OpenJPA 到 EclipseLink 迁移问题的信息,请参阅 OpenJPA to EclipseLink JPA Migration: Mappings 指南。