Os métodos do acessador privado devem ter uma anotação Transiente

De acordo com a especificação JPA 2.1, quando o acesso à propriedade é usado, os métodos do acessador da propriedade devem ser públicos ou protegidos. O OpenJPA ignora qualquer método do acessador privados, enquanto o EclipseLink persiste tais atributos. Para ignorar os métodos do acessador privado no EclipseLink, os métodos devem ter uma anotação Transiente.

Esta regra sinaliza métodos getter do acessador privado. A correção rápida para esta regra inclui a anotação javax.persistence.Transient no método, de forma que o aplicativo tenha o mesmo comportamento no EclipseLink que ele tem com o OpenJPA. Para persistir o atributo, não execute a correção rápida e, em vez disso, altere o modificador do controle de acesso private para public ou protected.

Por exemplo, a regra sinaliza o método getNonPersistentField() na classe de entidade a seguir:

entidades package ;

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

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

Após a correção rápida ser executada, a anotação Transient é aplicada no método do acessador private e a importação é incluída.

entidades package ;

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

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

Para obter informações sobre esse problema e outros problemas de migração do OpenJPA para o EclipseLink, consulte o guia Migração do OpenJPA para o EclipseLink JPA: mapeamentos.