Problembeschreibung
Ausführen einer nativen JPA-Abfrage mit MySQL Benutzervariable, die „:“ enthält, löst aufgrund einer ungültigen Syntax eine Ausnahme aus: Es ist nicht zulässig, „:“ mit einem Leerzeichen zu folgen.
Lösung
Um dieses Problem zu beheben, Sie müssen die Zeichen „:“ maskieren. Dies kann erreicht werden, indem ihnen ein Backslash '' vorangestellt wird.
Hier ist die korrigierte Abfrage:
SELECT foo, bar, baz, @rownum:= if (@id = foo, @rownum+1, 1) as rownum, @id := foo as rep_id FROM foo_table ORDER BY foo, bar desc
Implementierung in JPA
Query q = getEntityManager().createNativeQuery(query, SomeClass.class); return q.getResultList();
Hinweis:
Die bereitgestellte Lösung setzt eine MySQL-Datenbank voraus. Bei Verwendung anderer Datenbanken kann die Syntax für das Escapen von Sonderzeichen variieren. Daher ist es wichtig, die empfohlenen Escape-Methoden in der spezifischen Datenbankdokumentation zu finden.
Das obige ist der detaillierte Inhalt vonWie entferne ich den Doppelpunkt „:' in JPA-Abfragen für MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!