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.
Un correctif automatique ajoutera 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 classe publique EntityA { @Id private int id ; private EntityB entityRefer; }
import javax.persistence.Entity; import javax.persistence.Id; @Entity classe publique EntityB { @Id entier privé id ; }
Un correctif automatique ajoutera les annotations @Transient et la déclaration d' importation.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Transient; @Entity classe publique EntityA { @Id private int id ; @Transient private EntityB entityReferent; }
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.