Ответ 1
Используйте @JoinColumn
вместо @Column
:
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
У меня есть объект 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.
Что я должен использовать для ссылки на столбец внешнего ключа?
Используйте @JoinColumn
вместо @Column
:
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
Использование @JoinColumn
и @Column
вместе приведет к той же ошибке.
Измените его, чтобы использовать только: @JoinColumn
, чтобы исправить его.
@JoinColumn указывает, что это поле является внешним ключом. @Column указывает, что это поле является обычным столбцом таблицы.
В SQL мы можем объединять таблицы только по внешним ключам. Поэтому @ManyToOne или @ManyToMany применимы только к полям, являющимся внешними ключами. Чтобы указать, что нам нужно использовать @JoinColumn.
Когда мы используем @Column, hibernate принимает его как обычный столбец таблицы и выдает ошибку, утверждающую, что
Поскольку данный столбец не является внешним ключом, вы не можете использовать его для присоединения.
Решение уже дано крафтаном
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;