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
Freigeben: 2024-11-03 16:04:02
Original
495 Leute haben es durchsucht

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>
Nach dem Login kopieren

Um diese Abfrage auszuführen Verwenden Sie im Ruhezustand den folgenden Code:

<code class="java">sessionFactory.getCurrentSession()
    .createSQLQuery(query)
    .setParameter("kid", kid)
    .uniqueResult();</code>
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage