Desde mi experiencia te cuento. Hay dos escenarios
1) Desea especificar un parámetro en la consulta cuyo valor se establece dinámicamente.
eg: where user_id = :userId
Aquí no tendrá ningún problema si está configurando un parámetro con el mismo nombre que "userId";
2) Está encasillando el valor
eg: select count(id) :: integer
cuando esté haciendo esto, debe usar el carácter de escape; de lo contrario, Hibernate pensará que es un parámetro. Y dará un error "Todos los parámetros no están establecidos" puede superar esto escribiendo código usando el carácter de escape
eg:select count(id) \\:\\: integer
Así que esto resolverá su problema. Y si se usa incorrectamente la barra inclinada hacia delante en lugar de la barra inclinada hacia atrás, obtendrá el error "no se permite espacio después del prefijo"
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
Pero te recomiendo enfáticamente que uses la función CAST en lugar de usar "::"
esta operación select CAST(count(id) as integer)
Es la mejor forma de conversión de tipos y dará lugar a errores mínimos