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. Corecţia rapidă adaugă 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
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;
}

Corecţia rapidă adaugă adnotările @Transient şi declaraţia import.

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

@Entity
public class EntityA {
    @Id
    private int id;
   
    @Transient
    private 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.