Maison > Article > base de données > Comment générer des identifiants pour les superclasses abstraites dans les applications Spring MVC à l'aide d'Hibernate et MySQL ?
@GeneratedValue Superclasse abstraite polymorphe sur MySQL
Lorsque vous travaillez avec des superclasses abstraites et @GeneratedValue dans une application Spring MVC utilisant Hibernate et MySQL, il est Il est essentiel de prendre en compte les exigences spécifiques et les limites de la base de données. L'erreur « La table 'docbd.hibernate_sequences' n'existe pas » survient souvent lorsque GenerationType.TABLE est utilisé avec MySQL, qui ne prend pas en charge les séquences de manière native.
Aperçu du problème
Le problème se produit car GenerationType.TABLE nécessite une table appelée "hibernate_sequences" pour stocker les valeurs de séquence. Puisque MySQL ne dispose pas de cette table, Hibernate tente de la créer, ce qui entraîne l'erreur. De plus, l'utilisation de GenerationType.IDENTITY n'est pas réalisable lors de la gestion des identifiants dans une superclasse abstraite.
Solution
Malgré les limitations de GenerationType.TABLE et GenerationType.IDENTITY, il existe un solution qui répond aux deux problèmes. Au lieu de s'appuyer sur une table de séquence ou AUTO_INCREMENT, récupérer manuellement l'ID suivant et le définir avant d'enregistrer l'entité résoudra le problème. Cette approche implique les étapes suivantes :
Cette approche génère efficacement de nouveaux identifiants sans s'appuyer sur séquences ou AUTO_INCREMENT. Il offre une plus grande flexibilité et garantit que le problème des séquences inexistantes dans MySQL est résolu.
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!