Les attributs de collection non annotés nécessitent une annotation Transient

Dans OpenJPA, les attributs qui héritent de l'interface java.util.Collection<E> ne sont pas par défaut de type persistant et, par conséquent, ne sont conservés que s'ils sont annotés. EclipseLink a un comportement différent et tente de conserver ces attributs dans la base de données. Pour conserver le comportement d'OpenJPA qui consiste à ignorer les attributs de collection non annotés, ajoutez l'annotation javax.persistence.Transient à ces attributs dans EclipseLink.

Cette règle marque les attributs sans annotation JPA qui héritent de l'interface java.util.Collection<E>, dont les sous-interfaces suivantes :

Dans la classe entité suivante, les attributs collectionField et listField sont marqués par la règle.

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

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

@Entity
classe publique UnannotatedCollectionEntité {
    @Id private int id ; private Collection collectionField; private List listField; }

Un correctif automatique ajoutera les annotations @Transient et la déclaration d' importation.

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

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

@Entity
classe publique UnannotatedCollectionEntité {
    @Id private int id ; @Transient private Collection collectionField;
    @Transient private Liste listField; }

Pour des informations sur ce problème et d'autres problèmes de migration d'OpenJPA vers EclipseLink, voir le guide OpenJPA to EclipseLink JPA Migration: Mappings.