J'ai une question sur Hibernate Mappings de plusieurs tomany. J'ai deux classes A et B et le mappage entre eux est un mappage multiple résolu par Hibernate: Comme vous pouvez le constater, la table de jointure que j'utilise est C. Les clés étrangères à A et B sont "a_id" et "b_id". Ma compréhension est que Hibernate crée une clé primaire composée avec A_ID et B_ID pour la table C. P> Je ne veux pas avoir une entité C dans mon modèle. Mais au lieu d'une clé primaire composée sur la table C, j'aimerais avoir une ID générée et une contrainte unique sur les champs A_ID et B_ID. p> est-il possible de dire à Hibernate d'utiliser une clé primaire distincte? Sans ajouter une entité c? P> J'apprécierais toute aide. P> Merci beaucoup! p> p>
3 Réponses :
Je ne pense pas que ce soit possible. Et je ne vois pas de problème dans la définition d'une entité Si vous avez des informations supplémentaires Ind the Join-Tableau, il ne sera pas accessible à vous, car votre Aussi, votre BTW, Hibernate peut ne pas être alarmé par le fait que le tableau crée une autre entité - à l'aide de votre mappage actuel peut fonctionner (sans tenir compte de la colonne ID). Lorsque vous avez dit "Hibernate Create", je suppose que vous générez votre schéma depuis votre modèle d'entité. Maintenant, il semble que c'est le contraire, alors donnez-le un essai. P> C code>. P>
Set code> contient l'entité cible - A code> ou ou B code>. P>
SET CODE> S permettrait d'utiliser des génériques - c'est-à-dire SET CODE> et SET P >
Le point est que la base de données existe déjà avec la structure donnée (et en raison de raisons héritées, il n'est pas vraiment adaptable). La table n'a rien de plus que les trois champs que j'ai écrites (ID, A_ID, B_ID). Ce serait bien d'insérer de nouvelles entrées en C sans créer une entité (inutile) C dans mon code. Mais merci quand même pour la réponse. Je suppose que je dois simplement créer cette entité alors ...
@Bozho est-ce que je crée une entité séparée en utilisant une annotation intégrable?
mais au lieu d'une clé primaire composée sur la table C, j'aimerais avoir une ID générée et une contrainte unique sur les champs A_ID et B_ID. p> blockQuote>
Normalement la clé primaire du
jointotable code> est constitué de la combinaison des deux clés étrangères. Au moins, c'est ce que JPA générerait. Mais si vous n'utilisez pas le fournisseur JPA pour générer le modèle et si le PK peut être généré par la base de données (à l'aide d'une colonne code> identité code>, un déclencheur, etc.), vous devriez pouvoir utiliser La tableC code> pour votreAssociation de typeTomany code> (sans avoir à introduire une entité supplémentaire et à transformer la relation dans deuxonetomanan code>). Avez-vous réellement essayé? p>
Vous devriez le faire comme ça. Mais il ne peut être appliqué que pour la liste (non pour les ensembles)