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