Z mé zkušenosti vám to řeknu. Existují dva scénáře
1) Chcete v dotazu zadat parametr, jehož hodnota se nastavuje dynamicky.
eg: where user_id = :userId
Zde nebudete mít žádný problém, pokud nastavujete parametr se stejným názvem jako "userId";
2) Přetypujete hodnotu
eg: select count(id) :: integer
když to děláte, musíte použít znak escape, jinak si hibernace bude myslet, že jde o parametr. A zobrazí chybu „Všechny parametry nejsou nastaveny “ můžete to překonat psaním kódu pomocí znaku escape
eg:select count(id) \\:\\: integer
Takže to vyřeší váš problém. A pokud jste nesprávně použili lomítko místo zpětného lomítka, zobrazí se chyba "mezera není povolena za předponou"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
Ale důrazně vám doporučuji použít funkci CAST místo použití "::"
tento operátor select CAST(count(id) as integer)
Je to lepší způsob přetypování a povede k minimálním chybám