Annotierte Getter-Methoden müssen eine Setter-Methode haben

Wenn eine Entitätsklasse den Eigenschaftenzugriff mit Annotationen in Getter- und Setter-Methoden verwendet, müssen eine Getter- und eine Setter-Methode für ein Feld definiert werden, damit es persistent gespeichert wird. Annotierte Getter-Methoden, die keine entsprechende Setter-Methoden haben, werden von OpenJP ignoriert, wohingegen in EclipseLink in diesem Fall eine Ausnahme ausgelöst wird.

Diese Regel markiert annotierte Getter-Methoden für Eigenschaftenzugriffsfelder, die keine Setter-Methode haben. Überprüfen Sie die Entitätsdefinition und ändern Sie sie so, dass das gewünschte Verhalten erreicht wird. Wenn Sie möchten, dass das Feld vom JPA-Provider ignoriert wird, entfernen Sie alle Annotationen in der Getter-Methode. Wenn Sie möchten, dass das Feld persistent gespeichert wird, fügen Sie eine Setter-Methode hinzu.

In der folgenden Entitätsklasse wird die Methode getVersion von der Regel markiert.

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;
	}
	
	// Diese Getter-Methode ist nicht annotiert und wird deshalb nicht markiert.
	public long getTime() {
		return time;
	}
	
	// Diese Getter-Methode wird markiert, weil sie annotiert ist und keine Setter-Methode hat.
	@Version
	public double getVersion() {
		return 2.0;
	}
	
	public MissingSetter2() {
		time = 0;
	}
}

Informationen zu diesem Problem und zu weiteren Problemen bei der Migration von OpenJPA auf EclipseLink finden Sie in der Veröffentlichung OpenJPA to EclipseLink JPA Migration: Mappings.