@Column(s) не разрешено в свойстве @ManyToOne

У меня есть объект JPA с набором свойств как

@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;

Но когда я развертываю JBoss 6, приложение выдает сообщение об ошибке:

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property

Я использую Hibernate 3.5 в качестве реализации JPA 2.0.

Что я должен использовать для ссылки на столбец внешнего ключа?

Ответ 1

Используйте @JoinColumn вместо @Column:

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;

Ответ 2

Использование @JoinColumn и @Column вместе приведет к той же ошибке. Измените его, чтобы использовать только: @JoinColumn, чтобы исправить его.

Ответ 3

@JoinColumn указывает, что это поле является внешним ключом. @Column указывает, что это поле является обычным столбцом таблицы.

В SQL мы можем объединять таблицы только по внешним ключам. Поэтому @ManyToOne или @ManyToMany применимы только к полям, являющимся внешними ключами. Чтобы указать, что нам нужно использовать @JoinColumn.

Когда мы используем @Column, hibernate принимает его как обычный столбец таблицы и выдает ошибку, утверждающую, что
Поскольку данный столбец не является внешним ключом, вы не можете использовать его для присоединения.

Решение уже дано крафтаном

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;