J'ai créé le haricot d'entité suivant et spécifié deux colonnes comme unique. Maintenant, mon problème est que le tableau est créé sans la contrainte unique et aucune erreur dans le journal.
Est-ce que quelqu'un a une idée?
6 Réponses :
Plus de suggestions qu'une réponse réelle ... P>
Vous devez clarifier le fournisseur JPA (et la version) que vous utilisez pour de telles questions. P> LI>
Je remarque que l'une de vos colonnes fait partie d'une association code> HeuresToone CODE>, cela peut être un cas "spécial" non bien géré par votre fournisseur JPA. Par non bien manipulé, je veux dire bug. Je vérifierais le problème de la question pour un problème existant (et peut-être créer un nouveau, votre cas semble compatible JPA). P> Li> ul>
Eh bien, j'ai trouvé une autre façon de faire la conception. Plus parce que la conception a évolué qu'un travail autour de.
J'ai entendu parler d'un collègue qui avait eu le même problème, cette contrainte unique uniquement ne sont créées que par Hibernate (nous exécutons JBoss 4.3) lorsque toute la base de données est créée. Cela ne fonctionnera pas lorsque vous créez une nouvelle table dans une base de données existante.
Donc, dans persistance.xml il est nécessaire de définir hibernate.hbm2ddl.auto code> sur
créer-goutte code> pour le faire fonctionner. Je ne peux pas le confirmer cependant. P>
Homaxà votre observation est correcte. J'ai confronté la même situation et la contrainte fonctionne lorsque la création-goutte est définie.
J'ai eu le même problème et la création de l'ensemble de la base de données a travaillé
Je l'ai testé en recélérant toute la base de données en utilisant toutes les 3 options: update code>,
créer code> et
create-goutte code> et il n'a pas Travaillez pour moi pour l'une des trois options. Logiquement également, il n'a pas de sens de le faire fonctionner avec juste
Create-goutte non avec
Mettre à jour code> et
Créer code>. On dirait un bug pour moi dans Hibernate. Mais encore une fois, je me demande comment vient que ce bogue n'est pas encore résolu par 2021 (bug de 10 ans ??).
Vous n'avez pas à tout laisser tomber, déposez simplement cette table particulière que vous souhaitez créer un index unique pour P>
Si vous voulez la contrainte unique, vous devez le faire par SQL:
ALTER TABLE cm_blockList ADD CONSTRAINT cm_blockList_unq UNIQUE (terminal);
J'ai également fait face au même problème, mais ajout de key unique = "uk1_test" code> dans le fichier de mappage fonctionnant bien. P>
unique-key = "uk1_test" unique = "vrai" code> dans le fichier de mappage créé
Alter Table Employé Ajouter une contrainte UK1_TEST UNIC (Adrid) CODE> P>
Ces jours-ci, je rencontre le même problème lorsque j'ajouterai Après quelques essais avec elle, j'ai trouvé une table de base de données de mise à jour de Data Spring Data JPA (DDL) lorsque les champs changent mais pas avec les modifications @column. Attribuez donc unique = true après que les tableaux créés sont inutiles. Pour obtenir une table avec un index unique, vous devez déposer l'ancien one.Tren réexécuter le code, que JPA crée une table à nouveau. P>
Je crois que c'est parce que JPA ne sait pas si elle contient la même valeur de champ dans la table ancienne lors de l'évitement d'un nouvel index unique. Il accepte une nouvelle table. P> @column (nullable = false, unique = true, longueur = 16) code> et n'a pas obtenu un index unique. P>
Notre serveur est JBoss, le fournisseur JPA est donc hiberné, je crois.