В OpenJPA при наличии аннотации @OneToOne или
@ManyToOne у реляционного атрибута с аннотацией
@Column эта аннотация @Column рассматривается как аннотация @JoinColumn. EclipseLink в этом случае генерирует исключительную ситуацию из-за того, что
класс сущности должен использовать @JoinColumn вместо
@Column для преобразования реляционного атрибута.
Это правило отмечает аннотации @Column, которые используются вместе с аннотацией OneToOne или ManyToOne.
Процедура быстрого исправления заменяет аннотацию @Column на аннотацию @JoinColumn.
Все атрибуты аннотации копируются в аннотацию @JoinColumn.
Такие элементы javax.persistence.Column, как length, precision и scale, не копируются.
Ниже приведен пример аннотации Column в классе сущности, которую отметит это правило:
import javax.persistence.Entity; import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.ManyToOne; @Entity public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @Column(name="account") private Account account; } |
Процедура быстрого исправления заменяет аннотацию @Column на аннотацию @JoinColumn и добавляет соответствующие операторы импорта.
import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.ManyToOne; import javax.persistence.JoinColumn; @Entity public class TransactionEntity { @Id private int id; private long transactionNumber; private double amount; @ManyToOne @JoinColumn(name="account") private Account account; } |
Для получения дополнительной информации об этой проблеме и других проблемах, возникающих при миграции OpenJPA в EclipseLink, обратитесь к руководству Миграция OpenJPA в EclipseLink JPA: преобразования.