アノテーションが付けられた getter メソッドには setter メソッドが必要である

エンティティー・クラスが getter メソッドおよび setter メソッドにアノテーションを付けることでプロパティー・アクセスを使用している場合、フィールドを永続化するためには、getter メソッドと setter メソッドの両方を定義する必要があります。 アノテーションが付けられた getter メソッドに setter メソッドが付随していない場合、OpenJPA では無視されるのに対し、EclipseLink では例外がスローされます。

この規則により、プロパティー・アクセス・フィールドのアノテーションが付けられた getter メソッドのうち、setter メソッドが欠落しているものにフラグを立てます。 エンティティーの定義を確認し、意図した動作を行うように変更してください。 JPA プロバイダーがフィールドを無視するようにする場合は、getter メソッド上のアノテーションをすべて削除します。 フィールドを永続化させる場合は、setter メソッドを追加します。

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

package entities;

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

@Entity
public class MissingSetter2  {
	
	private int id;
	private long time;
	
	public MissingSetter2 (int id) {
		this.id = id;
	}

	@Id
	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}
	
	// この getter にはアノテーションは付いていないため、フラグは立てられません。
	public long getTime() {
		return time;
	}
	
	// この getter にはアノテーションが付いており、setter がないため、フラグが立てられます。
	@Version
	public double getVersion() {
		return 2.0;
	}
	
	public MissingSetter2() {
		time = 0;
	}
}

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