2010-11-08 52 views
104

我有設定爲@Column(S)不允許在@ManyToOne屬性

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

屬性JPA實體但是,當我在JBoss 6部署應用程序拋出一個錯誤說:

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

我使用Hibernate 3.5作爲JPA 2.0實現。

我應該用什麼來引用外鍵列?

回答

205

使用@JoinColumn代替@Column

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

但是爲什麼?對此有何解釋? – 2016-01-13 17:07:06

+3

@OndrejTokar可能是因爲您在此處使用'@ ManyToOne',而在另一側(類)使用''mappedBy''',這意味着此列(名爲''LicenseeFK''')是一個外鍵,因此聯合柱。 所以,它是一個名爲''LicenseeFK''的加入列。我希望現在很清楚。 – Casper 2017-05-19 11:47:17

4

使用@JoinColumn@Column在一起會導致同樣的錯誤。 將其更改爲只能使用:@JoinColumn可以修復它。

+8

你的回答很混亂。 \ @ManyToOne點不能使用\ @Column。 – Abbadon 2015-01-24 09:06:42

+0

@Abbadon我編輯了答案,使其更清晰。 – 2017-10-24 09:53:49