În OpenJPA, atributele care sunt ele însele clase entitate nu sunt persistente implicit.
EclipseLink are un comportament implicit diferit şi încearcă să persiste aceste atribute
la baza de date.
Pentru a păstra comportamentul OpenJPA de ignorare a atributelor entitate neadnotate, adăugaţi
adnotarea javax.persistence.Transient la aceste atribute în EclipseLink.
Această regulă semnalează atribute fără adnotări JPA care sunt clase entitate.
Dacă unealta nu poate găsi clasa la care se face referire, ea înregistrează în istoric
un avertisment în istoricul de erori Eclipse. Unealta s-ar putea să nu găsească clasa
dacă proiectele dependente sau clasele nu sunt accesibile sau există
erori de compilare.
O remediere automată va adăuga adnotarea @Transient la atribut.
În următoarea clasă entitate, câmpul entityReference este semnalat de regulă.
import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică EntityA { @Id int privat id; privat EntityB entityReference; }
import javax.persistence.Entity; import javax.persistence.Id; @Entity clasă publică EntityB { @Id int privat id; }
O soluție automată va adăuga adnotările @Transient și declarația de import.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity clasă publică EntityA { @Id int privat id; @Transient privat EntityB entityReference; }
Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.