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. Die Schnellkorrektur für diese Regel fügt der Methode die Annotation
javax.persistence.Transient hinzu, damit die Anwendung in
EclipseLink dasselbe Verhalten aufweist wie in OpenJPA.
Wenn das Attribut persistent gespeichert werden soll, führen Sie die Schnellkorrektur nicht aus und ändern Sie
den Zugriffssteuerungsmodifikator private stattdessen in public oder protected.
Die Regel markiert beispielsweise die Methode getNonPersistentField() in der folgenden Entitätsklasse:
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; } } |
Nach der Ausführung der Schnellkorrektur wird die Annotation Transient
auf die Zugriffsmethode private angewendet und der Import wird hinzugefügt.
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; } } |
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.