I metodi di accesso privati devono avere un'annotazione Transient

In base alla specifica JPA 2.1, quando si utilizza l'accesso proprietà, i metodi di accesso delle proprietà devono essere pubblici o protetto. OpenJPA ignora qualsiasi metodo di accesso privato, mentre EclipseLink conserva tali attributi. Per ignorare i metodi di accesso privato in EclipseLink, i metodi devono avere un'annotazione Transient.

Questa regola contrassegna i metodi getter di accesso privato. Una correzione automatica per questa regola aggiungerà l'opzione javax.persistence.Transient al metodo, in modo tale che l'applicazione abbia lo stesso comportamento in EclipseLink come in OpenJPA. Per persistere l'attributo, cambiare il modificatore del controllo di accesso privato in pubblico o protetto.

Ad esempio, questa regola contrassegna il metodo getNonPersistentField nella seguente classe di entità:

Entità pacchetto ;

importa javax.persistence.Entity;
Importazione javax.persistence.Id;

@Entity
Classe pubblica PrivateAccessor { private int id; campo private int ; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} private int getNonPersistentField() { return nonPersistentField;
	} private void setNonPersistentField(int value) { this.field = value;
	}}

Dopo l'esecuzione della correzione automatica, l'annotazione Transient viene applicata al metodo accessor al metodo accessor privato e viene aggiunta l'importazione.

Entità pacchetto ;

importa javax.persistence.Entity;
Importazione javax.persistence.Id;
Importa javax.persistence.Transient;

@Entity
Classe pubblica PrivateAccessor { private int id; campo private int ; @Id public int getId() {
		return id;
	} public void setId(int id) { this.id = id;
	} @Transient private int getNonPersistentField() { return nonPersistentField;
	} private void setNonPersistentField(int value) { this.field = value;
	}}

Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.