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. Uma correção automatizada para essa regra adicionará o javax.persistence.Transient ao método para que o aplicativo tenha o mesmo comportamento em EclipseLink e em OpenJPA. Para manter o atributo, altere o modificador de controle de acesso privado para público ou protegido.

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 execução da correção automatizada, a anotação Transient é aplicada ao método acessório privado, e a importação é adicionada.

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.