Las anotaciones JoinColumn se deben utilizar con correlaciones de relaciones

En OpenJPA, cuando un atributo de relación tiene una anotación @OneToOne o @ManyToOne con una anotación @Column, la anotación @Column se trata como una anotación @JoinColumn. EclipseLink lanza una excepción que indica que la clase de entidad debe utilizar @JoinColumn en lugar de @Column para correlacionar un atributo de relación.

Esta regla señala anotaciones @Column que se utilizan con anotaciones OneToOne o ManyToOne. Una corrección automática sustituirá la anotación @Column por una anotación @JoinColumn anotación. Todos los atributos de anotación correspondientes se copian en la anotación @JoinColumn. Los elementos de javax.persistence.Column length, precision y scale no se copian.

Por ejemplo, esta regla señala la anotación Column en la clase de entidad siguiente:


import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

@Entity
clase pública TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @Column(name = "account ")
    Cuenta privada ;}

Una corrección automática sustituirá la anotación @Column por una anotación @JoinColumn y proporciona las importaciones apropiadas.


import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;

@Entity
clase pública TransactionEntity {
    @Id private int id; private long transactionNumber; private double amount; @ManyToOne
    @JoinColumn(name = "account ")
    Cuenta privada ;}

Si desea más información sobre este problema y otros problemas de migración de OpenJPA a EclipseLink, consulte la guía Migración de OpenJPA a EclipseLink JPA: Correlaciones.