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. Le correctif rapide de cette règle ajoute l'annotation javax.persistence.Transient à la méthode pour que l'application ait le même comportement dans EclipseLink et dans OpenJPA. Pour conserver l'attribut, n'exécutez pas le correctif rapide mais remplacez le modificateur de contrôle d'accès private par public ou protected.

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

package entities;

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() {
		return nonPersistentField;
	}
	
	private void setNonPersistentField(int value) {
		this.field = value;
	}

}

Après l'exécution du correctif rapide, l'annotation Transient est appliquée à la méthode d'accès private et l'importation est ajoutée.

package entities;

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