OpenJPA では、それ自体がエンティティー・クラスである属性は、デフォルトで永続化されません。
EclipseLink には異なるデフォルトの振る舞いがあり、これらの属性をデータベースに永続化しようとします。
アノテーションが付けられていないエンティティー属性を無視するという OpenJPA の振る舞いを保持するには、EclipseLink でこれらの属性に javax.persistence.Transient アノテーションを追加します。
この規則により、エンティティー・クラスである、JPA アノテーションが付けられていない属性にフラグを立てます。
参照されるクラスがツールにより見つけられない場合は、Eclipse エラー・ログに警告が記録されます。従属プロジェクトまたは従属クラスがアクセス不能である場合、またはコンパイル・エラーがある場合、ツールでクラスを見つけられないことがあります。
クイック・フィックスにより、属性に @Transient アノテーションが追加されます。
以下のエンティティー・クラスでは、この規則により entityReference フィールドにフラグが立てられます。
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; private EntityB entityReference; } |
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityB { @Id private int id; } |
クイック・フィックスにより、@Transient アノテーションと import ステートメントが追加されます。
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference; } |
この問題や、OpenJPA から EclipseLink へのマイグレーションに関するその他の問題については、 OpenJPA to EclipseLink JPA Migration: Mappings ガイドを参照してください。