Av min erfarenhet kommer jag att berätta. Det finns två scenarier
1) Du vill ange en parameter i frågan vars värde ställs in dynamiskt.
eg: where user_id = :userId
Här kommer du inte få några problem om du ställer in parameter med samma namn som "userId";
2) Du typcastar värdet
eg: select count(id) :: integer
när du gör detta måste du använda escape-tecken annars kommer hibernate att tro att det är en parameter. Och det kommer att ge ett felmeddelande "Alla parametrar är inte inställda" du kan övervinna detta genom att skriva kod med escape-tecken
eg:select count(id) \\:\\: integer
Så detta kommer att lösa ditt problem. Och om du felaktigt används framåt snedstreck istället för bakåt snedstreck får du felet "mellanslag är inte tillåtet efter prefix"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
Men jag rekommenderar starkt att du använder CAST-funktionen istället för att använda "::"
denna operator select CAST(count(id) as integer)
Det är det bättre sättet att typgjuta och det kommer att leda till minimala fel