JoinColumn 注释必须与关系映射一起使用

在 OpenJPA 中,当关系属性具有带有 @Column 注释的 @OneToOne@ManyToOne 注释时,@Column 注释将被视为 @JoinColumn 注释。EclipseLink 抛出异常,表明实体类必须使用 @JoinColumn 而不是 @Column 来映射关系属性。

该规则将标记与 OneToOneManyToOne 注释一起使用的 @Column 注释。 自动修复功能会将 @Column 注解替换为 @JoinColumn 注释。 所有对应注释属性都将复制到 @JoinColum 注释。 不会复制 javax.persistence.Column 元素 lengthprecisionscale

例如,该规则将标记以下实体类中的 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 指南。