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

Wie verwende ich den MySQL-Zuweisungsoperator (:=) in nativen Hibernate-Abfragen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-03 16:04:02479Durchsuche

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

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!

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