Metody pobierające z adnotacjami muszą mieć metody ustawiające

Jeśli klasa jednostki korzysta z dostępu do właściwości przez umieszczenie adnotacji w metodach pobierających i ustawiających, aby możliwe było utrwalanie pola, należy zdefiniować zarówno metodę pobierającą, jak i metodę ustawiającą. Metody pobierające z adnotacjami, którym nie towarzyszy metoda ustawiająca, są ignorowane przez interfejs OpenJPA, natomiast interfejs EclipseLink zgłasza w takiej sytuacji wyjątek.

Ta reguła powoduje oznaczenie metod pobierających dla pól dostępu do właściwości, dla których brakuje metody ustawiającej. Należy przejrzeć definicję jednostki i zmodyfikować ją tak, aby zachowywała się zgodnie z zamierzeniem. Jeśli pole ma być ignorowane przez dostawcę JPA, należy usunąć wszystkie adnotacje z metody pobierającej. Jeśli pole ma zostać utrwalone, należy dodać metodę ustawiającą.

W następującej klasie jednostki metoda getVersion zostaje oznaczona przez regułę.

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;
	}
	
	// This getter is not annotated, so it is not flagged.
	public long getTime() {
		return time;
	}
	
	// This getter is flagged because it is annotated and there is no setter.
	@Version
	public double getVersion() {
		return 2.0;
	}
	
	public MissingSetter2() {
		time = 0;
	}
}

Informacje na ten temat oraz na temat innych problemów z migracją interfejsu OpenJPA do interfejsu EclipseLink zawiera podręcznik Migracja interfejsu JPA ze środowiska OpenJPA do EclipseLink: Odwzorowania.