Atrybuty jednostki bez adnotacji wymagają adnotacji Transient

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. Automatyczna poprawka doda adnotację @Transient do atrybutu.

W następującej klasie jednostki pole entityReference zostaje oznaczona przez regułę.

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class (klasa publiczna) EntityA {
    @Id private int id; private EntityB entityReference; }
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class (klasa publiczna) EntityB {
    @Id private int id; }

Automatyczna poprawka doda adnotacje @Transient i instrukcję importu.

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Transient;

@Entity
public class (klasa publiczna) 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.