Atributele colecţie neadnotate necesită o adnotare Transient

În OpenJPA, atributele care moştenesc de la interfaţa java.util.Collection<E> nu sunt un tip persistent implicit, aşa că aceste atribute nu sunt persistente decât dacă sunt adnotate. 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 de colecţie neadnotate, adăugaţi adnotarea javax.persistence.Transient la aceste atribute în EclipseLink.

Această regulă semnalează atributele fără adnotări JPA care moştenesc de la interfaţa java.util.Collection<E>, inclusiv următoarele subinterfeţe:

În următoarea clasă entitate, atributele collectionField şi listField sunt semnalate de regulă.

import java.util.Collection;
import java.util.List;

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

@Entity
clasă publică UnannotatedCollectionEntity {
    @Id
    int privat id;
   
    privat Collection collectionField;
    privat List listField;

}

O soluție automată va adăuga adnotările @Transient și declarația de import.

import java.util.Collection;
import java.util.List;

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

@Entity
clasă publică UnannotatedCollectionEntity {
    @Id
    int privat id;
   
    @Transient
    privat Collection collectionField;
    @Transient
    privat List listField;

}

Pentru informaţii despre această problemă şi alte probleme legate de migrarea OpenJPA la EclipseLink, vedeţi ghidul OpenJPA to EclipseLink JPA Migration: Mappings.