Mam podmiot JPA z właściwością ustawioną jako
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Ale kiedy wdrażam na JBoss 6, aplikacja wyświetla komunikat o błędzie:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
Używam Hibernate 3.5 jako implementację JPA 2.0.
Czego należy użyć do odniesienia się do kolumny klucza obcego?
Odpowiedzi:
Użyj
@JoinColumn
zamiast@Column
:źródło
@ManyToOne
na tym i"mappedBy"
po drugiej stronie (klasa), co oznacza, że ta kolumna (nazwana"LicenseeFK"
) jest kluczem obcym, a więc połączoną kolumną. Jest to więc połączona kolumna o nazwie"LicenseeFK"
. Mam nadzieję, że teraz jest to jasne.Używanie
@JoinColumn
i@Column
razem spowoduje ten sam błąd. Zmień to na używanie:@JoinColumn
aby to naprawić.źródło
@Column
WZP
@Column
adnotacja jest dla podstawowych atrybutów jednostki, jakString
,Integer
,Date
.Tak więc, jeśli nazwa atrybutu jednostki różni się od podstawowej nazwy kolumny, musisz użyć
@Column
adnotacji, aby jawnie określić nazwę kolumny, na przykład:@JoinColumn
@JoinColumn
Adnotacji służy dostosować nazwę kolumny klucz obcy , a to może być używane tylko ze stowarzyszenia jednostki.Tak więc w twoim przypadku, ponieważ używasz
@ManyToOne
skojarzenia, musisz użyć@JoinColumn
:źródło