Z mojego doświadczenia opowiem. Istnieją dwa scenariusze
1) Chcesz określić parametr w zapytaniu, którego wartość jest ustawiana dynamicznie.
eg: where user_id = :userId
Tutaj nie będzie żadnego problemu, jeśli ustawiasz parametr o tej samej nazwie co "userId";
2) Rzucasz typ wartości
eg: select count(id) :: integer
kiedy to robisz, musisz użyć znaku ucieczki, w przeciwnym razie hibernate pomyśli, że jest to parametr. I spowoduje to błąd „Wszystkie parametry nie są ustawione ” możesz temu zaradzić, pisząc kod ze znakiem ucieczki
eg:select count(id) \\:\\: integer
To rozwiąże Twój problem. A jeśli niewłaściwie użyjesz ukośnika zamiast ukośnika odwrotnego, pojawi się błąd „spacja nie jest dozwolona po prefiksie”
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
Ale gorąco polecam Ci użycie funkcji PRZESYŁANIE zamiast używania "::"
ta operatorka select CAST(count(id) as integer)
Jest to lepszy sposób rzucania typów i prowadzi do minimalnych błędów