Anotované metody getter musí mít metodu setter

Když třída entity používá přístup k vlastnostem pomocí umístění anotací na metody getter a setter, musí být pro pole, které má být zachováno, definována metoda getter a setter. Anotované metody getter, které nejsou provázeny metodou setter, jsou rozhraním OpenJPA ignorovány, zatímco v této situaci EclipseLink generuje výjimku.

Toto pravidlo značí anotované metody getter pro pole přístupu k vlastnostem, které postrádají metodu setter. Ověřte definici entity a upravte ji tak, aby se chovala podle očekávání. Pokud chcete, aby bylo pole ignorováno poskytovatelem JPA, odeberte všechny anotace v metodě getter. Chcete-li toto pole trvale uchovat, přidejte metodu setter.

V následující třídě entity je metoda getVersion označena pravidlem.

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;
	}
	
	// Tato metoda getter není anotována, takže nebude označena.
	public long getTime() {
		return time;
	}
	
	// Tato metoda getter je označena, protože je anotována a neexistuje metoda setter.
	@Version
	public double getVersion() {
		return 2.0;
	}
	
	public MissingSetter2() {
		time = 0;
	}
}

Informace o tomto problému a jiných problémech migrace OpenJPA na EclipseLink viz příručka Migrace OpenJPA na EclipseLink JPA: Mapování.