Prywatne metody korzystające muszą mieć adnotację Transient

Zgodnie ze specyfikacją JPA 2.1, gdy używany jest dostęp do właściwości, metody korzystające właściwości muszą być publiczne lub chronione. Produkt OpenJPA ignoruje wszystkie prywatne metody korzystające, natomiast produkt EclipseLink utrwala te atrybuty. Aby zignorować prywatne metody korzystające w produkcie EclipseLink, metody te muszą mieć adnotację Transient.

Ta reguła powoduje oznaczenie flagą metod procedury pobierającej prywatnego obiektu korzystającego. Zautomatyzowana poprawka dla tej reguły doda atrybut javax.persistence.Transient do metody, tak aby aplikacja zachowywała się tak samo w EclipseLink jak w OpenJPA. Aby zachować atrybut, zmień modyfikator kontroli dostępu private na publiczny lub chroniony.

Na przykład reguła powoduje oznaczenie flagą metody getNonPersistentField() w następującej klasie jednostki:

pakiet jednostki;

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

@Entity
public class PrivateAccessor { private int id; private int field; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} private int getNonPersistentField() { zwraca nonPersistentField;
	} private void setNonPersistentField(int wartość) { this.field = value;
	} }

Po uruchomieniu automatycznej poprawki adnotacja Transient jest stosowana do prywatnej metody akcesora i import zostaje dodany.

pakiet jednostki;

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

@Entity
public class PrivateAccessor { private int id; private int field; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} @Transient private int getNonPersistentField() { return nonPersistentField;
	} private void setNonPersistentField(int wartość) { this.field = value;
	} }

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.