Для реляционных преобразований должны использоваться аннотации JoinColumn

В OpenJPA при наличии аннотации @OneToOne или @ManyToOne у реляционного атрибута с аннотацией @Column эта аннотация @Column рассматривается как аннотация @JoinColumn. EclipseLink в этом случае генерирует исключительную ситуацию из-за того, что класс сущности должен использовать @JoinColumn вместо @Column для преобразования реляционного атрибута.

Это правило отмечает аннотации @Column, которые используются вместе с аннотацией OneToOne или ManyToOne. Автоматическое исправление заменит аннотацию @Column на @JoinColumn аннотацией. Все атрибуты аннотации копируются в аннотацию @JoinColumn. Такие элементы javax.persistence.Column, как length, precision и scale, не копируются.

Ниже приведен пример аннотации Column в классе сущности, которую отметит это правило:


импорт javax.persistence.Entity;
импорт javax.persistence.Column;
импорт javax.persistence.Id;
импорт javax.persistence.ManyToOne;

@Entity
общедоступный класс TransactionEntity {
    @Id
    частная id;
 
    Частные длинные transactionNumber;
    частный двойной amount;
    
    @ManyToOne
    @Column(name="account")
    частное Account account;
}

Автоматическое исправление заменит аннотацию @Column на @JoinColumn и обеспечивает соответствующий импорт.


импорт javax.persistence.Entity;
импорт javax.persistence.Id;
импорт javax.persistence.ManyToOne;
импорт javax.persistence.JoinColumn;

@Entity
общедоступный класс TransactionEntity {
    @Id
    частная id;
 
    Частные длинные transactionNumber;
    частный двойной amount;
    
    @ManyToOne
    @JoinColumn(name="account")
    частное Account account;
}

Для получения дополнительной информации об этой проблеме и других проблемах, возникающих при миграции OpenJPA в EclipseLink, обратитесь к руководству Миграция OpenJPA в EclipseLink JPA: преобразования.