private accessor メソッドには Transient アノテーションを付ける必要がある

JPA 2.1 仕様により、プロパティー・アクセスが使用されている場合、プロパティーの accessor メソッドは public または protected である必要があります。OpenJPA は private accessor メソッドがある場合は無視するのに対し、EclipseLink はそれらの属性を永続化します。EclipseLink で private accessor メソッドを無視するには、このメソッドは Transient アノテーションを持つ必要があります。

この規則により、private accessor getter メソッドにフラグを立てます。EclipseLink でのアプリケーションの振る舞いが OpenJPA を使用した時と同じになるように、この規則のクイック・フィックスにより javax.persistence.Transient アノテーションがメソッドに追加されます。 属性を永続化するには、クイック・フィックスを実行せず、代わりに private アクセス制御修飾子を public または protected に変更します。

例えば、この規則は以下のエンティティー・クラスの getNonPersistentField() メソッドにフラグを立てます。

package entities;

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

@Entity
public class PrivateAccessor  {
	
	private int id;
	private int field;
	
	@Id
	public int getId() {
		return id;
	}

 	public void setId(int id) {
		this.id = id;
	}
	
	private int getNonPersistentField() {
		return nonPersistentField;
	}
	
	private void setNonPersistentField(int value) {
		this.field = value;
	}

}

クイック・フィックスの実行後、Transient アノテーションが private accessor メソッドに適用され、import が追加されます。

package entities;

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

@Entity
public class PrivateAccessor  {
	
	private int id;
	private int field;
	
	@Id
	public int getId() {
		return id;
	}

 	public void setId(int id) {
		this.id = id;
	}
	
	@Transient
	private int getNonPersistentField() {
		return nonPersistentField;
	}
	
	private void setNonPersistentField(int value) {
		this.field = value;
	}
}

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