@GeneratedValue Polymorphic Abstract Superclass over MySQL
Bei der Arbeit mit abstrakten Superklassen und @GeneratedValue in einer Spring MVC-Anwendung unter Verwendung von Hibernate und MySQL ist dies der Fall Es ist wichtig, die spezifischen Anforderungen und Einschränkungen der Datenbank zu berücksichtigen. Der Fehler „Tabelle 'docbd.hibernate_sequences' existiert nicht“ tritt häufig auf, wenn GenerationType.TABLE mit MySQL verwendet wird, das Sequenzen nativ nicht unterstützt.
Problemübersicht
Das Problem tritt auf, weil GenerationType.TABLE eine Tabelle namens „hibernate_sequences“ benötigt, um die Sequenzwerte zu speichern. Da MySQL nicht über diese Tabelle verfügt, versucht Hibernate, sie zu erstellen, was zu dem Fehler führt. Darüber hinaus ist die Verwendung von GenerationType.IDENTITY bei der Verwaltung von IDs in einer abstrakten Oberklasse nicht möglich.
Lösung
Trotz Einschränkungen bei GenerationType.TABLE und GenerationType.IDENTITY gibt es eine Lösung, die beide Probleme angeht. Anstatt sich auf eine Sequenztabelle oder AUTO_INCREMENT zu verlassen, kann das Problem durch manuelles Abrufen der nächsten ID und Festlegen dieser vor dem Speichern der Entität gelöst werden. Dieser Ansatz umfasst die folgenden Schritte:
Dieser Ansatz generiert effektiv neue IDs, ohne sich darauf verlassen zu müssen auf Sequenzen oder AUTO_INCREMENT. Es bietet mehr Flexibilität und stellt sicher, dass das Problem nicht vorhandener Sequenzen in MySQL gelöst wird.
Das obige ist der detaillierte Inhalt vonWie generiert man IDs für abstrakte Superklassen in Spring MVC-Anwendungen mit Hibernate und MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!