Les attributs d'entité non annotés nécessitent une annotation Transient

Dans OpenJPA, les attributs représentant eux-mêmes des classes entité ne sont pas conservés par défaut. 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 d'entité non annotés, ajoutez l'annotation javax.persistence.Transient à ces attributs dans EclipseLink.

Cette règle marque des attributs sans annotation JPA représentant des classes entité. Si l'outil ne peut pas trouver la classe référencée, il consigne un avertissement dans le journal d'erreurs Eclipse. La classe peut être introuvable en raison de l'inaccessibilité de classes ou de projets dépendants ou de la présence d'erreurs de compilation. Le correctif rapide ajoute l'annotation @Transient à l'attribut.

Dans la classe entité suivante, la zone entityReference est marquée par la règle.

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

@Entity
public class EntityA {
    @Id
    private int id;
   
    private EntityB entityReference;
}
import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class EntityB {
    @Id
    private int id;
}

Le correctif rapide ajoute les annotations @Transient et l'instruction import.

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

@Entity
public class EntityA {
    @Id
    private int id;
   
    @Transient
    private EntityB entityReference;
}

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.