Jeśli klasa jednostki korzysta z dostępu do właściwości przez umieszczenie adnotacji w metodach pobierających i ustawiających, aby możliwe było utrwalanie pola, należy zdefiniować zarówno metodę pobierającą, jak i metodę ustawiającą. Metody pobierające z adnotacjami, którym nie towarzyszy metoda ustawiająca, są ignorowane przez interfejs OpenJPA, natomiast interfejs EclipseLink zgłasza w takiej sytuacji wyjątek.
Ta reguła powoduje oznaczenie metod pobierających dla pól dostępu do właściwości, dla których brakuje metody ustawiającej. Należy przejrzeć definicję jednostki i zmodyfikować ją tak, aby zachowywała się zgodnie z zamierzeniem. Jeśli pole ma być ignorowane przez dostawcę JPA, należy usunąć wszystkie adnotacje z metody pobierającej. Jeśli pole ma zostać utrwalone, należy dodać metodę ustawiającą.
W następującej klasie jednostki metoda getVersion zostaje oznaczona przez regułę.
package entities; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; import javax.persistence.Version; @Entity public class MissingSetter2 { private int id; private long time; public MissingSetter2 (int id) { this.id = id; } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } // This getter is not annotated, so it is not flagged. public long getTime() { return time; } // This getter is flagged because it is annotated and there is no setter. @Version public double getVersion() { return 2.0; } public MissingSetter2() { time = 0; } } |
Informacje na ten temat oraz na temat innych problemów z migracją interfejsu OpenJPA do interfejsu EclipseLink zawiera podręcznik Migracja interfejsu JPA ze środowiska OpenJPA do EclipseLink: Odwzorowania.