Î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 clasa publică UnannotatedCollectionEntity { @Id private int id; private Collection collectionField; private 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 clasa publică UnannotatedCollectionEntity { @Id private int id; @Transient private Collection collectionField; @Transient private List listField; }
Pentru informaţii despre această problemă şi alte probleme de migrare de la OpenJPA la EclipseLink, vedeţi ghidul Migrarea OpenJPA la EclipseLink JPA: Mapări.