J'ai une entité JPA avec une propriété définie comme
@ManyToOne
@Column(name="LicenseeFK")
private Licensee licensee;
Mais lorsque je déploie sur JBoss 6, l'application renvoie une erreur disant:
org.hibernate.AnnotationException: @Column(s) not allowed on a @ManyToOne property
J'utilise Hibernate 3.5 comme implémentation JPA 2.0.
Que dois-je utiliser pour référencer la colonne de clé étrangère?
Réponses:
Utilisez à la
@JoinColumn
place de@Column
:la source
@ManyToOne
sur ceci, et"mappedBy"
de l'autre côté (classe), ce qui signifie que cette colonne (nommée"LicenseeFK"
) est une clé étrangère, et donc une colonne jointe. Donc, c'est une colonne jointe avec un nom"LicenseeFK"
. J'espère que c'est clair maintenant.Utiliser
@JoinColumn
et@Column
ensemble entraînera la même erreur. Modifiez-le pour utiliser uniquement:@JoinColumn
pour le réparer.la source
@Column
L'Assemblée parlementaire paritaire
@Column
annotation est pour les attributs d'entités de base, commeString
,Integer
,Date
.Ainsi, si le nom de l'attribut d'entité diffère du nom de la colonne sous-jacente, vous devez utiliser l'
@Column
annotation pour spécifier le nom de la colonne explicitement, comme ceci:@JoinColumn
L'
@JoinColumn
annotation est utilisée pour personnaliser un nom de colonne de clé étrangère et ne peut être utilisée qu'avec une association d'entité.Donc, dans votre cas, parce que vous utilisez une
@ManyToOne
association, vous devez utiliser@JoinColumn
:la source