私の経験からお話しします。 2つのシナリオがあります
1)値が動的に設定されるパラメータをクエリで指定する必要があります。
eg: where user_id = :userId
ここでは、「userId」と同じ名前のパラメータを設定している場合は問題ありません。
2)値を型キャストしています
eg: select count(id) :: integer
これを行うときは、エスケープ文字を使用する必要があります。そうしないと、Hibernateはそれがパラメーターであると見なします。また、エラーが発生します"すべてのパラメータが設定されていません" エスケープ文字を使用してコードを書くことでこれを克服できます
eg:select count(id) \\:\\: integer
したがって、これで問題が解決します。バックスラッシュではなくスラッシュを誤って使用すると、「プレフィックスの後にスペースを使用できません」というエラーが表示されます。
Wrong: select count(id)//://: integer
Right: select count(id)\\:\\: integer
ただし、"::"
を使用する代わりにCAST関数を使用することを強くお勧めします。 この演算子select CAST(count(id) as integer)
これは型キャストのより良い方法であり、エラーを最小限に抑えることができます