Maison > base de données > tutoriel mysql > Comment résoudre les erreurs « Colonne inconnue 'sequence_name' » lors de l'utilisation de @GeneratedValue sur une superclasse abstraite polymorphe avec MySQL ?

Comment résoudre les erreurs « Colonne inconnue 'sequence_name' » lors de l'utilisation de @GeneratedValue sur une superclasse abstraite polymorphe avec MySQL ?

Barbara Streisand
Libérer: 2024-11-22 07:09:14
original
1038 Les gens l'ont consulté

How to Resolve

Superclasse abstraite polymorphe @GeneratedValue sur MySQL

Dans une application Spring MVC utilisant Hibernate et MySQL, vous pouvez rencontrer des problèmes lors de l'utilisation de @GeneratedValue sur une superclasse abstraite avec des sous-classes qui l'étendent. Voici un examen plus approfondi du problème et une solution.

Problème

Lors de l'enregistrement des sous-classes de la superclasse abstraite BaseEntity dans MySQL, vous pouvez recevoir une erreur concernant le non- existence de la table hibernate_sequences. Cela se produit car MySQL ne prend pas en charge les séquences et GenerationType.TABLE (la valeur par défaut de @GeneratedValue) nécessite l'utilisation d'une séquence.

Solution

Pour surmonter ce problème problème, vous devez créer une table appelée hibernate_sequences dans MySQL, comme suggéré par JBNizet dans la deuxième modification de la question d'origine. Cependant, même après avoir créé la table, vous pourriez rencontrer une autre erreur : "Colonne inconnue 'sequence_name' dans 'where clause'".

Pour résoudre ce problème, modifiez l'instruction SELECT générée par Hibernate pour spécifier correctement le nom de la séquence :

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update
Copier après la connexion

Modifiez l'instruction par :

Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_names = 'BASE_ENTITY' for update
Copier après la connexion

Assurez-vous que le nom de la séquence est en majuscule dans l'instruction SELECT, ce qui doit correspondre au nom de séquence que vous avez spécifié lors de la création de la table (instruction create table ...).

Une fois le nom de séquence correct, Hibernate SQL devrait fonctionner de manière transparente, vous permettant d'enregistrer les sous-classes de BaseEntity sans rencontrer "Inconnu erreurs de la colonne 'sequence_name'".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal