Tengo una entidad JPA con una propiedad establecida como
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Pero cuando despliegue en JBoss 6, la aplicación arroja un error que dice:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
Yo uso Hibernate 3.5 como la implementación JPA 2.0.
¿Qué debo usar para hacer referencia a la columna de clave externa?
Respuestas:
Usar en
@JoinColumn
lugar de@Column
:fuente
@ManyToOne
en esto y"mappedBy"
en el otro lado (clase), lo que significa que esta columna (nombrada"LicenseeFK"
) es una clave foránea y, por lo tanto, una columna unida. Entonces, es una Columna unida con nombre"LicenseeFK"
. Espero que esté claro ahora.Usar
@JoinColumn
y@Column
juntos dará como resultado el mismo error. Cámbielo para usar solo:@JoinColumn
para arreglarlo.fuente
@Column
La APP
@Column
anotación es para los atributos básicos de la entidad, comoString
,Integer
,Date
.Entonces, si el nombre del atributo de la entidad difiere del nombre de la columna subyacente, entonces debe usar la
@Column
anotación para especificar el nombre de la columna explícitamente, de esta manera:@JoinColumn
La
@JoinColumn
anotación se usa para personalizar un nombre de columna de clave externa y solo se puede usar con una asociación de entidad.Entonces, en su caso, debido a que está utilizando una
@ManyToOne
asociación, debe usar@JoinColumn
:fuente