Heim >Datenbank >MySQL-Tutorial >Wie verwende ich den MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?
MySQL-Zuweisungsoperator in nativen Hibernate-Abfragen
Bei der Arbeit mit Hibernate kann es vorkommen, dass Sie Subselect-Anweisungen in nativen Abfragen verwenden müssen. Mit nativen Abfragen können Sie mithilfe ihrer eigenen Syntax direkt mit der zugrunde liegenden Datenbank interagieren.
Der Versuch, den MySQL-Zuweisungsoperator (:=) in einer nativen Abfrage in Hibernate zu verwenden, kann jedoch zu einer Ausnahme führen: „Speicherplatz ist nicht erlaubt nach Parameterpräfix ':' ....". Dies ist auf ein bekanntes Problem (HHH-2697) mit Hibernate zurückzuführen.
Lösung
Glücklicherweise wurde dieses Problem in Hibernate 4.1.3 und späteren Versionen behoben. Um den MySQL-Zuweisungsoperator in einer nativen Abfrage zu verwenden, können Sie ihn jetzt mit einem Backslash () maskieren.
Betrachten Sie beispielsweise die folgende native Abfrage:
<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>
Um diese Abfrage auszuführen Verwenden Sie im Ruhezustand den folgenden Code:
<code class="java">sessionFactory.getCurrentSession() .createSQLQuery(query) .setParameter("kid", kid) .uniqueResult();</code>
Indem Sie den Zuweisungsoperator mit einem Backslash maskieren, wird die Abfrage erfolgreich ausgeführt.
Das obige ist der detaillierte Inhalt vonWie verwende ich den MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!