Private Zugriffsmethoden müssen eine Annotation Transient haben

Wenn der Eigenschaftenzugriff verwendet wird, müssen die Eigenschaftenzugriffsmethoden entsprechend der Spezifikation JPA 2.1 öffentlich oder geschützt sein. OpenJPA ignoriert alle privaten Zugriffsmethoden, wohingegen EclipseLink diese Attribute persistent speichert. Wenn private Zugriffsmethoden in EclipseLink ignoriert werden sollen, müssen diese Methode eine Annotation "Transient" haben.

Diese Regel markiert private Getter-Zugriffsmethoden. Eine automatische Korrektur für diese Regel fügt die javax.persistence.Transient anmerkung zur Methode hinzugefügt, so dass die Anwendung in EclipseLink das gleiche Verhalten aufweist wie in OpenJPA. Um das Attribut beizubehalten, ändern Sie den Modifikator für die private Zugriffskontrolle in öffentlich oder geschützt.

Die Regel markiert beispielsweise die Methode getNonPersistentField() in der folgenden Entitätsklasse:

package -Entitäten

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 wert) { this.field = wert;
	}}

Nachdem die automatische Korrektur ausgeführt wurde, wird die Transient-Anmerkung auf die private Accessor-Methode angewandt, und der Import wird hinzugefügt.

package -Entitäten

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 wert) { this.field = wert;
	}}

Informationen zu diesem Problem und zu weiteren Problemen bei der Migration von OpenJPA auf EclipseLink finden Sie in der Veröffentlichung OpenJPA to EclipseLink JPA Migration: Mappings.