Raum ist nicht erlaubt nach dem parameter prefix ':'
Mein problem ist, ich versuchen, text einzufügen, der char enthalten : in meiner Abfrage
Ich habe versucht, einen doppelten Schrägstrich //char vor : aber es funktioniert immer noch nicht.
ABNORMALLY.java.lang.IllegalArgumentException:
org.hibernate.QueryException: Space is not allowed after parameter prefix ':'
INSERT INTO TABLE_A (A_ID, TYPE_ID, F_ID, REFNO, RECORD) VALUES
( A_ID_SEQ.nextval, 4 , 9 , 'NY167', q'[LA2010167|SNIP' N CLIP|LMG|1.Unit no\\: 1046, 1 st Floor, Limbang Plaza, 98700 Limbang|2010-12-10||]')
- umschließen Sie die Abfrage in einfache Anführungszeichen falsch scheint. was Kontext ist das erscheinen in?
- Ähnliche Frage wurde hier beantwortet stackoverflow.com/a/9461939/4454454
- ich aktualisiere einfach die info. es gibt kein einziges Zitat für die Einhausung der Abfrage. dies ist, wenn ich die Abfrage in log.info()
- mit interceptor in einer Art und Weise, aber ich weiß wirklich nicht, wie es code. ich bevorzuge andere schneller Weg, die so etwas wie zusätzliche Doppel-backslash zu machen, es funktionierte.
- wäre es nicht einfacher, um die Werte als Parameter anstelle von hart-Codierung? auf diese Weise würde der Weg an der Zeit, dass hibernate analysiert diese Suche für benannte Parameter.
- Dank bro. Es geklappt hat.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier Überwintern Analyse einer insert enthält einen hart codierten Wert, ein Kolon. Wenn Sie schreiben Sie die insert-Parameter dann in den Ruhezustand wird nicht sehen den Wert als Teil der Aussage.
Aus meiner Erfahrung kann ich Ihnen sagen. Es gibt zwei Szenarien
1) Sie möchten einen parameter in der Abfrage, dessen Wert dynamisch gesetzt.
Hier werden Sie nicht bekommen, kein problem, wenn Sie die Einstellung der parameter mit demselben Namen wie "userId";
2) Sie sind typecasting der Wert
wenn Sie dies tun, verwenden Sie die escape-Zeichen sonst hibernate denken, dass es ein parameter ist. Und es wird eine Fehlermeldung zu geben "Alle Parameter sind nicht gesetzt "
können Sie überwinden diese mit dem schreiben von code mithilfe von escape-Zeichen
So wird Ihr problem lösen.
Und wenn Sie falsch verwendet slash statt Backslash erhalten Sie die Fehlermeldung " - Raum ist nicht erlaubt nach dem Präfix"
Aber ich sehr empfehlen Sie, um die CAST-Funktion anstelle von
"::"
dieser operatorie
select CAST(count(id) as integer)
Es ist die bessere Möglichkeit der Typumwandlung, und es führt zu minimalen Fehlern
Das problem ist, dass Ihr DATENSATZ-Spalte enthält ":", so, Hibernate wartet für einen parameter nach.
Ich hade das gleiche problem von Euch