Gli attributi di raccolta non annotati richiedono un'annotazione Transient

In OpenJPA, gli attributi che ereditano dall'interfaccia java.util.Collection<E> non rappresentano un tipo persistente predefinito, quindi questi attributi non sono persistenti a meno che non siano annotati. EclipseLink ha un comportamento predefinito differente e tenta di conservare questi attributi nel database. Per adottare il comportamento di OpenJPA, che ignora gli attributo di raccolta non annotati, aggiungere l'annotazione javax.persistence.Transient a tali attributi in EclipseLink.

Questa regola contrassegna gli attributi senza annotazioni JPA che ereditano dall'interfaccia java.util.Collection<E>, comprese le seguenti sotto interfacce:

Nella classe di entità seguente, gli attributi collectionField e listField vengono contrassegnati dalla regola.

importa java.util.Collection;
Importa java.util.List;

importa javax.persistence.Entity;
Importazione javax.persistence.Id;

@Entity
public class UnannotatedCollectionEntità {
    @Id private int id; private CollectionField; private List listField;}

Una correzione automatica aggiungerà le annotazioni @Transient e la dichiarazione di importazione.

importa java.util.Collection;
Importa java.util.List;

importa javax.persistence.Entity;
Importazione javax.persistence.Id;
Importa javax.persistence.Transient;

@Entity
public class UnannotatedCollectionEntità {
    @Id private int id; @Transient private CollectionField;
    @Transient privato List Field;}

Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.