属性に @ElementCollection アノテーションが付けられている場合、属性用に別個のテーブルが作成され、そこには属性の ID と値が含まれます。
OpenJPA では、このアノテーションが付けられた属性の列に element という名前が付けられるのに対し、EclipseLink ではその属性の名前に基づいて列に名前が付けられます。OpenJPA で作成されたテーブルとの互換性を維持するため、name 属性を element に設定した @Column アノテーションを追加します。
この規則は、name 属性が付加された @Column アノテーションを持たない @ElementCollection アノテーションをスキャンします。
自動修正では、 @Column アノテーションが追加されるか、 名前属性を持たない既存の @Column アノテーションが編集されます。
例えば、以下のフィールド・アクセス・エンティティー・クラスの @ElementCollection アノテーションは @Column アノテーションを持たないため、この規則はこのアノテーションにフラグを立てます。
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity 公開クラス ElementCollectionEntity {@Id private int id; @ElementCollection private List <String> listofStrings;}
自動修正により、 @Column アノテーションが追加される。
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity 公開クラス ElementCollectionEntity {@Id private int id; @ElementCollection @Column(name = "element") private List <String> listofStrings;}
この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。