W interfejsie OpenJPA atrybuty, które same są klasami jednostki, domyślnie nie są utrwalane.
Domyślne działanie interfejsu EclipseLink jest inne – następuje próba utrwalenia tych atrybutów w bazie danych.
Aby zachować działanie interfejsu OpenJPA, czyli ignorować atrybuty jednostki bez adnotacji, należy dodać do tych atrybutów w interfejsie EclipseLink adnotację javax.persistence.Transient.
Ta reguła powoduje oznaczenie atrybutów bez adnotacji JPA, które są klasami jednostki.
Jeśli narzędzie nie może znaleźć przywoływanej klasy, rejestruje ostrzeżenie w dzienniku błędów środowiska Eclipse. Narzędzie może nie znaleźć klasy, jeśli zależne projekty lub klasy są niedostępne lub wystąpiły błędy kompilacji.
Szybka poprawka dodaje do atrybutu adnotację @Transient.
W następującej klasie jednostki pole entityReference zostaje oznaczona przez regułę.
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; private EntityB entityReference; } |
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityB { @Id private int id; } |
Szybka poprawka dodaje adnotację @Transient i instrukcję import.
import javax.persistence.Entity; import javax.persistence.Id; @Entity public class EntityA { @Id private int id; @Transient private EntityB entityReference; } |
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.