2010-11-08 12 views
104

Tengo una entidad JPA con un conjunto de propiedades como@Column (s) no permitido en una propiedad @ManyToOne

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

Pero cuando despliego en JBoss 6 la aplicación produce un error que dice:

org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property 

Uso Hibernate 3.5 como la implementación de JPA 2.0.

¿Qué debo usar para hacer referencia a la columna de la clave externa?

Respuesta

205

Uso @JoinColumn en lugar de @Column:

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

¿Pero por qué? ¿Alguna explicación para eso? –

+3

@OndrejTokar tal vez porque usa '@ ManyToOne' en esto, y' 'mappedBy" 'en el otro lado (clase), lo que significa que esta columna (llamada' "LicenseeFK" ') es una clave externa, y por lo tanto un columna. Entonces, es unaColumna unida con el nombre '" LicenseeFK "'. Espero que esté claro ahora. – Casper

4

Usando @JoinColumn y @Column juntos resultará en el mismo error. Cámbialo para usar solo: @JoinColumn para solucionarlo.

+8

Tu respuesta es bastante confusa. No puede usar \ @Column con el punto \ @ManyToOne. – Abbadon

+0

@Abbadon He editado la respuesta para que quede más claro. –