Soukromé metody přistupujícího objektu musí mít anotaci Transient

Podle specifikace JPA 2.1 musí být metody přistupujícího objektu vlastnosti, pokud je použit přístup k vlastnostem, veřejná nebo chráněná. Rozhraní OpenJPA ignoruje všechny soukromé metody přistupujícího objektu, zatímco EclipseLink tyto atributy uchovává. Chcete-li ignorovat soukromé metody přistupujícího objektu v EclipseLink, musí mít metody anotaci Transient.

Toto pravidlo značí soukromé metody getter přistupujícího objektu. Automatizovaná oprava tohoto pravidla přidá do pole javax.persistence.Transient anotaci k metodě tak, aby aplikace se na adrese EclipseLink chovala stejně jako na adrese OpenJPA. Chcete-li atribut zachovat, změňte modifikátor řízení přístupu private na hodnotu public nebo protected.

Pravidlo například značí metodu getNonPersistentField() v následující třídě entity:

entity balíku ;

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

@Entity
veřejná třída PrivateAccessor { private int id; private int pole; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} private int getNonPersistentField() { vrací hodnotu nonPersistentField;
	} soukromá neobsazená setNonPersistentField(int hodnota) { this.field = hodnota;
	}}}

Po spuštění automatické opravy se použije anotace Přechodný stav na metodu private accessor a přidá se import.

entity balíku ;

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

@Entity
veřejná třída PrivateAccessor { private int id; private int pole; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} @Transient private int getNonPersistentField() { vrátit nonPersistentField;
	} soukromá neobsazená setNonPersistentField(int hodnota) { this.field = hodnota;
	}}}

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í.