アノテーションが付けられていないコレクション属性には Transient アノテーションを付ける必要がある

OpenJPA では、java.util.Collection<E> インターフェースから継承された属性はデフォルトの永続タイプではないため、これらの属性はアノテーションが付けられない限り永続化されません。 EclipseLink には異なるデフォルトの振る舞いがあり、これらの属性をデータベースに永続化しようとします。 アノテーションが付けられていないコレクション属性を無視するという OpenJPA の振る舞いを保持するには、EclipseLink でこれらの属性に javax.persistence.Transient アノテーションを追加します。

この規則により、以下のサブインターフェースを含む java.util.Collection<E> インターフェースから継承された、JPA アノテーションが付けられていない属性にフラグを立てます。

以下のエンティティー・クラスでは、この規則により collectionField 属性および listField 属性にフラグが立てられます。

import java.util.Collection;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
公開クラス UnannotatedCollectionエンティティー {
    @Id private int id; private Collection collectionField; private List listField;}

自動修正では、 @Transient アノテーションと import 文が追加される。

import java.util.Collection;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

@Entity
公開クラス UnannotatedCollectionエンティティー {
    @Id private int id; @Transient private Collection collectionField;
    @Transient private List listField;}

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