От моя опит ще ви кажа. Има два сценария
1) Искате да посочите параметър в заявката, чиято стойност се задава динамично.
eg: where user_id = :userId
Тук няма да получите никакъв проблем, ако задавате параметър със същото име като "userId";
2) Вие преобразувате стойността
eg: select count(id) :: integer
когато правите това, трябва да използвате escape знак, в противен случай hibernate ще мисли, че това е параметър. И ще даде грешка „Всички параметри не са зададени“ можете да преодолеете това с писане на код с помощта на символ за изход
eg:select count(id) \\:\\: integer
Така че това ще реши проблема ви. И ако погрешно сте използвали наклонена черта напред вместо наклонена черта назад, ще получите грешката "не е позволено пространство след префикса"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
Но горещо ви препоръчвам да използвате функцията CAST вместо "::"
този оператор select CAST(count(id) as integer)
Това е по-добрият начин за преобразуване на типове и ще доведе до минимални грешки