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

OpenJPA では、それ自体がエンティティー・クラスである属性は、デフォルトで永続化されません。 EclipseLink には異なるデフォルトの振る舞いがあり、これらの属性をデータベースに永続化しようとします。 アノテーションが付けられていないエンティティー属性を無視するという OpenJPA の振る舞いを保持するには、EclipseLink でこれらの属性に javax.persistence.Transient アノテーションを追加します。

この規則により、エンティティー・クラスである、JPA アノテーションが付けられていない属性にフラグを立てます。 参照されるクラスがツールにより見つけられない場合は、Eclipse エラー・ログに警告が記録されます。 従属プロジェクトまたは従属クラスがアクセス不能である場合、またはコンパイル・エラーがある場合、ツールでクラスを見つけられないことがあります。 自動修正では、 @Transient アノテーションが属性に追加されます。

以下のエンティティー・クラスでは、この規則により entityReference フィールドにフラグが立てられます。

インポート javax.persistence.Entity; インポート javax.persistence.Id; エンティティ public class EntityA { id private int id; private EntityB entityReference; }
インポート javax.persistence.Entity; インポート javax.persistence.Id; エンティティ public class EntityB { id private int id; }

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

インポート javax.persistence.Entity; インポート javax.persistence.Id; インポート javax.persistence.Transient; エンティティ public class EntityA { id private int id; トランジェント private EntityB entityReference; }

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