@JoinColumns répétée de la colonne dans la cartographie de l'entité
J'ai peut-être juste de l'incompréhension comment @JoinColumns travail, mais j'obtiens une erreur lorsque je réutiliser le nom de l'attribut. Mais ne pas l'attribut name de la carte à une base de données de la colonne? Ne devrais-je pas être en mesure de réutiliser?
Il y a erreur que j'obtiens:
Repeated column in mapping for entity: data.model.DP column: division
Le code:
@Column(name = "division", nullable = false)
private String division;
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumns({
@JoinColumn(name = "division_labeldefintion", referencedColumnName = "labeldefinition"),
@JoinColumn(name = "division", referencedColumnName = "abbr")
})
private LabelFile divisionLabel;
Ce que je suis en train de faire est de faire un multi-colonne de jointure d'une table (qui contient le division
colonne, et de le joindre avec la LabelFile
table.
OriginalL'auteur Hanna | 2012-09-13
Vous devez vous connecter pour publier un commentaire.
Si vous souhaitez réutiliser une colonne dans une cartographie, vous devez marquer un comme
insertable=false updatable=false
, à Hibernate de savoir quelle version de Java valeur de référence est pertinente.Plus d'informations sur l'utilisation de ces attributs est disponible dans cette question.
OriginalL'auteur juanignaciosl
Lors de l'utilisation de la JoinColumn d'annotation, vous devez être conscient que selon le type d'association entre deux tables ou les entités, les attributs "nom" et "referencedColumnName" sont en train de changer l'endroit où ils référencement.
Vérifier l'API JPA, ou regardez ici pour une description plus détaillée.
Dans votre cas, l'attribut "name" de JoinColumn sur "divisonLabel" propriété fait référence à la table de source/de l'entité. Et "referencedColumnName" fait référence aux colonnes de LabelFile de table/de l'entité.
Donc, vous essayez d'avoir deux "division" des colonnes de la table source/de l'entité.
D'avoir le travail de cartographie de l'interrupteur valeurs de "nom" et "referencedColumnName".
Il sera, et c'est le point. La façon dont vous avez écrit-il maintenant de la JPA/Hibernate est d'essayer de créer deux colonnes nommées "division"; l'un pour le champ de texte qui n'a rien à voir avec des associations; le deuxième à être utilisé en tant que partie de la clé composée. Annotation au-dessus de LabelFile de la propriété est de créer de nouveaux champs/colonnes à l'intérieur de l'entité courante/table. note: essayez de ne pas penser en forme de colonnes&tables, JPA et ORM sont là pour cacher la DB de vous et de vous faire travailler avec des objets plutôt. avertissement: je suis en train de taper ceci sans écrire de code, donc peut-être que je suis donnant sur quelque chose. j'espère que non.
OriginalL'auteur deyo.vuk