Atributele de entitate neadnotate necesită o adnotare Transient

Î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.