Heim >Datenbank >MySQL-Tutorial >Wie entkomme ich dem MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?

Wie entkomme ich dem MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 05:30:29566Durchsuche

How to Escape the MySQL Assign Operator (:=) in Hibernate Native Queries?

Escape des MySQL Assign (=)-Operators in nativen Hibernate-Abfragen

Bei der Arbeit mit nativen Hibernate-Abfragen können bei der Verwendung Fehler auftreten der MySQL-Zuweisungsoperator (:=) aufgrund des Leerzeichens nach dem Doppelpunkt (:). Dieses Problem tritt besonders deutlich in Fällen auf, in denen Subselect-Anweisungen erforderlich sind.

Der bereitgestellte Code veranschaulicht dies:

SELECT sub.rownum FROM (SELECT k.news_master_id AS id, @row := @row + 1 AS rownum FROM keyword_news_list k JOIN (SELECT @row := 0) r WHERE k.keyword_news_id = :kid ORDER BY k.news_master_id ASC) AS sub WHERE sub.id = :nid

Das Ausführen dieser Abfrage mit setParameter führt zu einer Ausnahme, die das fehlerhafte Leerzeichen nach dem Doppelpunkt hervorhebt .

Glücklicherweise bietet Hibernate jetzt eine Lösung für dieses Problem. In Hibernate 4.1.3 und höher können Sie den Zuweisungsoperator mit einem Backslash () maskieren, wie unten gezeigt:

SELECT k.news_master_id AS id, @row \:= @row + 1 AS rownum FROM keyword_news_list k JOIN (SELECT @row \:= 0) r WHERE k.keyword_news_id = :kid ORDER BY k.news_master_id ASC

Durch das Escapezeichen des Doppelpunkts interpretiert Hibernate die Syntax erfolgreich, sodass Sie Unterauswahlabfragen ausführen können effektiv.

Das obige ist der detaillierte Inhalt vonWie entkomme ich dem MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?. 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