Heim >Datenbank >MySQL-Tutorial >Wie behebe ich „Unbekannte Spalte ‚Sequenzname''-Fehler bei der Verwendung von @GeneratedValue für eine polymorphe abstrakte Superklasse mit MySQL?
@GeneratedValue Polymorphic Abstract Superclass Over MySQL
In einer Spring MVC-Anwendung, die Hibernate und MySQL verwendet, können bei der Verwendung von @GeneratedValue Probleme auftreten eine abstrakte Oberklasse mit Unterklassen, die sie erweitern. Hier ist ein genauerer Blick auf das Problem und eine Lösung.
Problem
Beim Speichern von Unterklassen der abstrakten Oberklasse BaseEntity in MySQL erhalten Sie möglicherweise eine Fehlermeldung bezüglich der Nicht- Existenz der Tabelle hibernate_sequences. Dies liegt daran, dass MySQL keine Sequenzen unterstützt und GenerationType.TABLE (der Standardwert für @GeneratedValue) die Verwendung einer Sequenz erfordert.
Lösung
Um dieses Problem zu beheben Bei diesem Problem müssen Sie eine Tabelle namens hibernate_sequences in MySQL erstellen, wie von JBNizet in der zweiten Bearbeitung der ursprünglichen Frage vorgeschlagen. Allerdings kann auch nach dem Erstellen der Tabelle ein weiterer Fehler auftreten: „Unbekannte Spalte ‚Sequenzname‘ in ‚Where-Klausel‘“.
Um dieses Problem zu beheben, ändern Sie die von Hibernate generierte SELECT-Anweisung, um den Sequenznamen richtig anzugeben:
Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_name = 'BaseEntity' for update
Ändern Sie die Anweisung wie folgt:
Hibernate: select sequence_next_hi_value from hibernate_sequences where sequence_names = 'BASE_ENTITY' for update
Stellen Sie sicher, dass der Sequenzname in SELECT groß geschrieben wird Anweisung, die mit dem Sequenznamen übereinstimmen sollte, den Sie bei der Tabellenerstellung angegeben haben (Anweisung „create table ...“).
Sobald der Sequenzname korrekt ist, sollte Hibernate SQL nahtlos funktionieren, sodass Sie Unterklassen von BaseEntity ohne speichern können Es treten Fehler vom Typ „Unbekannte Spalte ‚Sequenzname‘“ auf.
Das obige ist der detaillierte Inhalt vonWie behebe ich „Unbekannte Spalte ‚Sequenzname''-Fehler bei der Verwendung von @GeneratedValue für eine polymorphe abstrakte Superklasse mit MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!