Les annotations JoinColumn doivent être utilisées par les mappages de relations

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.