Le annotazioni JoinColumn devono essere utilizzate con associazioni di relazione

In OpenJPA, quando un attributo della relazione ha sia un'annotazione @OneToOne che una @ManyToOne con un'annotazione @Column, l'annotazione @Column viene gestita come un'annotazione @JoinColumn. EclipseLink genera un'eccezione che indica che la classe di entità deve utilizzare @JoinColumn invece di @Column per associare un attributo di relazione.

Questa regola contrassegna le annotazioni @Column che utilizzano le annotazioni OneToOne o ManyToOne. Una correzione automatica sostituirà l'annotazione @Column con un'annotazione @JoinColumn...con un'annotazione. Tutti gli attributi di annotazione corrispondenti vengono copiati nell'annotazione @JoinColumn. Gli elementi di javax.persistence.Column, length, precision e scale, non vengono copiati.

Ad esempio, questa regola contrassegna l'annotazione Column nella classe di entità seguente:


importa javax.persistence.Entity;
importa javax.persistence.Column;
Importazione javax.persistence.Id;
importa javax.persistence.ManyToOne;

@Entity
Classe pubblica TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @Column(name = "account ")
    Account privato ;}

Una correzione automatica sostituirà l'annotazione @Column con un'annotazione @JoinColumn e fornisce le importazioni appropriate.


importa javax.persistence.Entity;
Importazione javax.persistence.Id;
importa javax.persistence.ManyToOne;
importa javax.persistence.JoinColumn;

@Entity
Classe pubblica TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @JoinColumn(name = "account ")
    Account privato ;}

Per informazioni su questo problema e altri problemi della migrazione da OpenJPA a EclipseLink, consultare la guida OpenJPA to EclipseLink JPA Migration: Mappings.