У меня есть сущность 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
для этого и"mappedBy"
для другой стороны (класса), что означает, что этот столбец (именованный"LicenseeFK"
) является внешним ключом и, следовательно, объединенным столбцом. Итак, это joinColumn с именем"LicenseeFK"
. Надеюсь теперь понятно.Использование
@JoinColumn
и@Column
вместе приведет к той же ошибке. Измените это, чтобы использовать только:@JoinColumn
чтобы исправить это.источник
@Column
JPA
@Column
аннотации для основных атрибутов сущностей, какString
,Integer
,Date
.Таким образом, если имя атрибута сущности отличается от имени основного столбца, вам необходимо использовать
@Column
аннотацию для явного указания имени столбца, например:@JoinColumn
@JoinColumn
Аннотаций используется для настройки имени столбца внешнего ключа , и он может быть использован только с ассоциацией лица.Итак, в вашем случае, поскольку вы используете
@ManyToOne
ассоциацию, вам нужно использовать@JoinColumn
:источник