@ Колонна (ы) не разрешены для свойства @ManyToOne - PullRequest
126 голосов
/ 08 ноября 2010

У меня есть сущность 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.

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

Ответы [ 3 ]

262 голосов
/ 08 ноября 2010

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

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
4 голосов
/ 04 апреля 2013

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

1 голос
/ 10 апреля 2019

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

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

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

Решение уже предоставлено kraftan

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