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?
Verwenden @JoinColumn
anstatt @Column
:
@ManyToOne
@JoinColumn(name="LicenseeFK")
private Licensee licensee;
Mit @JoinColumn
und @Column
zusammen ergibt den gleichen Fehler. Ändern Sie es, um nur zu verwenden: @JoinColumn
um es zu beheben.
@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;