Eu tenho uma entidade JPA com uma propriedade definida como
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Mas quando eu implanto no JBoss 6, o aplicativo gera um erro dizendo:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
Eu uso o Hibernate 3.5 como a implementação do JPA 2.0.
O que devo usar para fazer referência à coluna de chave estrangeira?
Respostas:
Use em
@JoinColumn
vez de@Column
:fonte
@ManyToOne
isso e"mappedBy"
do outro lado (classe), o que significa que essa coluna (nomeada"LicenseeFK"
) é uma chave estrangeira e, portanto, uma coluna unida. Portanto, é um joinColumn com nome"LicenseeFK"
. Espero que esteja claro agora.Usar
@JoinColumn
e@Column
juntos resultará no mesmo erro. Altere para usar apenas:@JoinColumn
para corrigi-lo.fonte
@Column
O JPA
@Column
anotação é para atributos básicos entidade, comoString
,Integer
,Date
.Portanto, se o nome do atributo da entidade for diferente do nome da coluna subjacente, será necessário usar a
@Column
anotação para especificar explicitamente o nome da coluna, assim:@JoinColumn
A
@JoinColumn
anotação é usada para personalizar o nome da coluna Chave Externa e só pode ser usada com uma associação de entidade.Portanto, no seu caso, porque você está usando uma
@ManyToOne
associação, você precisa usar@JoinColumn
:fonte