Dans une application Spring MVC utilisant Hibernate et MySQL, il a été observé que la tentative de persistance des sous-classes d'une superclasse abstraite, BaseEntity , rencontre une erreur « La table 'docbd.hibernate_sequences' n'existe pas ». Cette erreur résulte de l'utilisation de GenerationType.TABLE pour @GeneratedValue et du manque de prise en charge des séquences dans MySQL.
Étant donné que l'utilisation de GenerationType.IDENTITY n'est pas viable en raison de la superclasse abstraite gérant les ID d'entité et GenerationType.SEQUENCE est n'est pas pris en charge, cela soulève la question de savoir comment résoudre ce problème. Les extraits de code fournis illustrent la superclasse abstraite (BaseEntity), un exemple de sous-classe (CCD), le langage spécifique au domaine (DDL) et le code JPQL dans un objet d'accès aux données (DAO).
La stratégie d'héritage utilisée est InheritanceType. .TABLE_PER_CLASS, indiquant des tables distinctes pour chaque sous-classe. Étant donné l'incapacité de MySQL à utiliser des séquences, l'alternative consistant à utiliser GenerationType.TABLE conduit inévitablement à l'absence de table hibernate_sequences.
L'affiche affirme que l'utilisation de @MappedSuperClass n'est pas une option viable, citant la nécessité de relations ManyToOne interchangeables. . À titre d'exemple, AccessLog contient un acteur_entity et un target_entity, qui héritent tous deux de BaseEntity. Dans ce scénario, l'utilisation de @MappedSuperClass entraînerait une erreur indiquant qu'AccessLog ne peut pas localiser BaseEntity.
Pour tenter de résoudre le problème, une table hibernate_sequences a été créée comme suggéré. Cependant, une nouvelle erreur est apparue : "Colonne inconnue 'sequence_name' dans 'where clause'." Cette erreur pointe vers la requête SQL initiée par Hibernate : "sélectionnez séquence_next_hi_value parmi hibernate_sequences où séquence_name = 'BaseEntity' pour la mise à jour."
Pour résoudre cette erreur spécifique, l'affiche a besoin d'aide pour résoudre la colonne 'sequence_name' manquante dans la table hibernate_sequences.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3