Ich habe eine JPA-Entität mit einer Eigenschaft, die als festgelegt ist
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Bei der Bereitstellung auf JBoss 6 gibt die Anwendung jedoch einen Fehler aus:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
Ich verwende Hibernate 3.5 als JPA 2.0-Implementierung.
Was soll ich verwenden, um auf die Fremdschlüsselspalte zu verweisen?
Antworten:
Verwenden Sie
@JoinColumn
anstelle von@Column
:quelle
@ManyToOne
auf dieser und"mappedBy"
auf der anderen Seite (Klasse) verwenden, was bedeutet, dass diese Spalte (benannt"LicenseeFK"
) ein Fremdschlüssel und daher eine verknüpfte Spalte ist. Es ist also eine joinColumn mit Namen"LicenseeFK"
. Ich hoffe es ist jetzt klar.Die Verwendung von
@JoinColumn
und@Column
zusammen führt zu demselben Fehler. Ändern Sie es so, dass es nur verwendet wird:@JoinColumn
um es zu beheben.quelle
@Column
Die PPV -
@Column
Annotation ist für die grundlegende Einheit Attribute, wieString
,Integer
,Date
.Wenn sich der Name des Entitätsattributs vom Namen der zugrunde liegenden Spalte unterscheidet, müssen Sie die
@Column
Anmerkung verwenden, um den Spaltennamen explizit wie folgt anzugeben:@JoinColumn
Die
@JoinColumn
Anmerkung wird verwendet , um ein anpassen Fremdschlüsselspaltennamen , und es kann nur mit einer Einheit , verwendet werden.In Ihrem Fall müssen Sie also Folgendes verwenden, da Sie eine
@ManyToOne
Zuordnung verwenden@JoinColumn
:quelle