Bei der Arbeit mit nativen MySQL-Abfragen in Hibernate ist häufig die Nutzung von Subselect-Anweisungen erforderlich. Wenn Sie jedoch den MySQL-Zuweisungsoperator (:=) in diesen Abfragen verwenden, kann es zu der Ausnahme „Leerzeichen ist nach dem Parameterpräfix ‚:‘ nicht zulässig“ kommen.
Dieses Problem ist auf die Beschränkung von Leerzeichen in Hibernate danach zurückzuführen Parameterpräfixe. Für diesen speziellen Fall gibt es jedoch eine Lösung.
In Hibernate-Versionen vor 4.1.3 gab es keine Problemumgehung für dieses Problem. Der Fehler HHH-2697 wurde jedoch in späteren Versionen behoben.
Für Hibernate 4.1.3 und höher können Sie den Zuweisungsoperator mit einem Backslash () maskieren. Auf diese Weise können Sie die folgende modifizierte Abfrage verwenden:
<code class="sql">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</code>
Mit dieser Escape-Syntax können Sie den Zuweisungsoperator in Ihren nativen Abfragen verwenden, ohne dass die oben genannte Ausnahme auftritt.
Das obige ist der detaillierte Inhalt vonWie verwende ich den Zuweisungsoperator (:=) von MySQL in nativen Hibernate-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!