Heim >Datenbank >MySQL-Tutorial >Wie behebe ich „Unbekannte Spalte ‚Sequenzname''-Fehler bei der Verwendung von @GeneratedValue für eine polymorphe abstrakte Superklasse mit MySQL?

Wie behebe ich „Unbekannte Spalte ‚Sequenzname''-Fehler bei der Verwendung von @GeneratedValue für eine polymorphe abstrakte Superklasse mit MySQL?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 07:09:141040Durchsuche

How to Resolve

@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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn