Les méthodes d'accès privées nécessitent une annotation Transient

Selon la spécification JPA 2.1, lorsque l'accès PROPERTY est utilisé, les méthodes d'accès aux propriétés doivent être publiques ou protégées. OpenJPA ignore les méthodes d'accès privées, alors qu'EclipseLink conserve ces attributs. Pour ignorer les méthodes d'accès privées dans EclipseLink, les méthodes nécessitent une annotation Transient.

Cette règle marque les méthodes d'accès Get privées. Un correctif automatisé de cette règle ajoutera le javax.persistence.Transient à la méthode de sorte que l'application ait le même comportement dans EclipseLink que dans OpenJPA. Pour conserver l'attribut, modifiez le modificateur de contrôle d'accès privé en public ou protected.

Par exemple, cette règle marque la méthode getNonPersistentField() dans la classe entité suivante :

Entités package ;

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

@Entity
classe publique PrivateAccessor { private int id ; zone 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 ;
	} }

Une fois la correction automatisée exécutée, l’annotation Transient est appliquée à la méthode d’accès privée et l’importation est ajoutée.

Entités package ;

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

@Entity
classe publique PrivateAccessor { private int id ; zone 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 ;
	} }

Pour des informations sur ce problème et d'autres problèmes de migration d'OpenJPA vers EclipseLink, voir le guide OpenJPA to EclipseLink JPA Migration: Mappings.