webentwicklung-frage-antwort-db.com.de

@Column (s) für eine @ManyToOne-Eigenschaft nicht zulässig

Ich habe eine JPA-Entität mit einer Eigenschaft als festgelegt

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

Aber wenn ich auf JBoss 6 einsetze, gibt die Anwendung eine Fehlermeldung aus:

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

Ich verwende Hibernate 3.5 als JPA 2.0-Implementierung.

Womit soll ich auf die Fremdschlüsselspalte verweisen?

129
newguy

Verwenden @JoinColumn anstatt @Column:

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
267
kraftan

Mit @JoinColumn und @Column zusammen ergibt den gleichen Fehler. Ändern Sie es, um nur zu verwenden: @JoinColumn um es zu beheben.

5

@JoinColumn gibt an, dass dieses Feld ein Fremdschlüssel ist. @Column gibt an, dass dieses Feld eine normale Spalte der Tabelle ist.

In SQL können wir Tabellen nur mit den Fremdschlüsseln verknüpfen. @ManyToOne oder @ManyToMany gelten also nur für die Felder, die Fremdschlüssel sind. Um anzuzeigen, dass wir @JoinColumn verwenden müssen.

Wenn wir @Column verwenden, nimmt hibernate an, dass es sich um eine normale Tabellenspalte handelt, und gibt einen Fehler aus, der dies besagt
Da eine bestimmte Spalte kein Fremdschlüssel ist, dürfen Sie sie nicht zum Beitreten verwenden.

Die Lösung wird bereits von Kraftan gegeben

@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
1
Shivendra Kadam