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.
Le correctif rapide remplace l'annotation @Column par une annotation @JoinColumn.
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 public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @Column(name="account") private Account account; } |
Le correctif rapide remplace 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 public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @JoinColumn(name="account") private Account account; } |
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.