ElementCollection アノテーションには定義された Column アノテーションが付随する必要がある

属性に @ElementCollection アノテーションが付けられている場合、属性用に別個のテーブルが作成され、そこには属性の ID と値が含まれます。 OpenJPA では、このアノテーションが付けられた属性の列に element という名前が付けられるのに対し、EclipseLink ではその属性の名前に基づいて列に名前が付けられます。OpenJPA で作成されたテーブルとの互換性を維持するため、name 属性を element に設定した @Column アノテーションを追加します。

この規則は、name 属性が付加された @Column アノテーションを持たない @ElementCollection アノテーションをスキャンします。 クイック・フィックスにより、@Column アノテーションが追加されるか、name 属性を持たない既存の @Column アノテーションが編集されます。

例えば、以下のフィールド・アクセス・エンティティー・クラスの @ElementCollection アノテーションは @Column アノテーションを持たないため、この規則はこのアノテーションにフラグを立てます。

import java.util.List;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class 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
public class ElementCollectionEntity {
    
    @Id
    private int id;
    
    @ElementCollection
    @Column(name = "element")
    private List<String> listofStrings;
}

この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。