Dans OpenJPA, lorsqu'un attribut de relation comporte une annotation
@OneToOne ou @ManyToOne avec une annotation
@Column, l'annotation @Column est traitée comme une annotation
@JoinColumn. EclipseLink génère une exception qui indique que la classe entité doit utiliser @JoinColumn au lieu de @Column pour mapper un attribut de relation.
Cette règle marque les annotations @Column utilisées avec des annotations OneToOne ou ManyToOne.
Un correctif automatisé remplacera l'annotation @Column par une annotation @JoinColumn annotation.
Tous les attributs d'annotation correspondants sont copiées dans l'annotation @JoinColumn.
Les éléments javax.persistence.Column length, precision et scale ne sont pas copiés.
Par exemple, cette règle marque l'annotation Column avec la classe entité suivante :
import javax.persistence.Entity; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity classe publique TransactionEntity { @Id private int id ; private long transactionNumber; private double amount ; @ManyToOne @Column(name = "account ") Compte privé ; }
Un correctif automatisé remplacera l'annotation @Column par une annotation @JoinColumn et fournit les importations appropriées.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity classe publique TransactionEntity { @Id private int id ; private long transactionNumber; private double amount ; @ManyToOne @JoinColumn(name = "account ") Compte privé ; }
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.