В 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: преобразования.