2010-11-08 9 views
104

Ho un'entità JPA con una proprietà impostata come@Column (s) non consentito su una proprietà @ManyToOne

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

Ma quando schiero su JBoss 6 l'applicazione genera un errore che dice:

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

Uso Hibernate 3.5 come implementazione JPA 2.0.

Cosa devo usare per fare riferimento alla colonna chiave esterna?

risposta

205

Uso @JoinColumn invece di @Column:

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

Ma perché? Qualche spiegazione a riguardo? –

+3

@OndrejTokar forse perché si usa '@ ManyToOne' su questo, e' "mappedBy" 'sull'altro lato (classe), il che significa che questa colonna (chiamata' "LicenseeFK" ') è una chiave esterna, e quindi una unita colonna. Quindi, è una joinColumn con il nome "" LicenseeFK "'. Spero sia chiaro ora. – Casper

4

Utilizzando @JoinColumn e @Column insieme comporterà lo stesso errore. Cambialo per usare solo: @JoinColumn per ripararlo.

+8

La tua risposta è abbastanza confusa. Non puoi utilizzare \ @Column con il punto \ @ManyToOne. – Abbadon

+0

@Abbadon Ho modificato la risposta per renderla più chiara. –

Problemi correlati