Lorsqu'un attribut est annoté avec @ElementCollection, une table séparée incluant l'ID et la valeur de cet attribut est créée.
Dans OpenJPA, la colonne de l'attribut annoté est nommée element, alors qu'EclipseLink désigne la colonne d'après le nom d'attribut. Pour conserver la compatibilité avec les tables créées avec OpenJPA, ajoutez une annotation @Column avec l'attribut name défini sur element.
Cette règle recherche les annotations @ElementCollection pour lesquelles l'annotation @Column est sans attribut name.
Un correctif automatisé ajoutera une annotation @Column ou modifiera une annotation @Column existante qui n'a pas d'attribut de nom.
Par exemple, la règle marque l'annotation @ElementCollection dans la classe entité avec accès FiELD suivante car l'annotation @Column est absente.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity classe publique ElementCollectionEntity { @Id private int id ; @ElementCollection private List <Chaîne> listofStrings; }
Un correctif automatique ajoutera l'annotation @Column.
import java.util.List; import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Id; @Entity classe publique ElementCollectionEntity { @Id private int id ; @ElementCollection @Column(name = "element") private List <Chaîne> listofStrings; }
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.