OpenJPA では、関係属性が @OneToOne アノテーションまたは @ManyToOne アノテーションのいずれかと、@Column アノテーションを共に持つ場合、この @Column アノテーションは @JoinColumn アノテーションとして扱われます。EclipseLink では、エンティティー・クラスは関係属性をマップするために @Column ではなく @JoinColumn を使用する必要があることを示す例外がスローされます。
この規則により、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 公開クラス TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @Column(name = "account ") private アカウント;}
自動修正では、 @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 ") private アカウント;}
この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。