@Column(s) non autorisé sur un @ManyToOne propriété
J'ai une entité JPA avec une propriété définie comme
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Mais quand je déploiement sur JBoss 6 l'application renvoie un message d'erreur indiquant:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
J'utilise Hibernate 3.5 comme JPA 2.0 mise en œuvre.
Que dois-je utiliser pour faire référence à la colonne de clé étrangère?
- Peut-être enlever le @ManyToOne annotation résout votre problème.
Vous devez vous connecter pour publier un commentaire.
Utilisation
@JoinColumn
au lieu de@Column
:@ManyToOne
sur ce, et"mappedBy"
de l'autre côté (de la classe), ce qui signifie que cette colonne (nommé"LicenseeFK"
) est une clé étrangère, et, par conséquent, une colonne jointe. Donc, c'est un joinedColumn avec le nom"LicenseeFK"
. J'espère que c'est clair maintenant.À l'aide de
@JoinColumn
et@Column
ensemble résultat sera le même message d'erreur.Modifier pour l'utiliser seulement:
@JoinColumn
pour le fixer.Les annotations@JoinColumn indique que ce champ est une clé étrangère.
@Colonne indique que ce champ est un champ normal de la colonne de la table.
En SQL, on peut joindre des tables uniquement sur le clés étrangères. Donc @ManyToOne ou @ManyToMany sont applicables uniquement sur les domaines qui sont les clés étrangères. Pour indiquer que nous devons utiliser les annotations @JoinColumn.
Lorsque nous utilisons @Colonne, hibernate suppose comme une normale de la colonne de la table et de lancer un message d'erreur indiquant que
Comme une colonne donnée n'est pas une clé étrangère vous n'êtes pas autorisé à l'utiliser pour rejoindre.
La solution est déjà donné par le kraftan