これは SQL Server DB であり、開発者は何年も前にブール値の列名に?
文字を含めました。多くのシステムがこの DB にアクセスするため、この列名を変更することは、私にとって実際にはオプションではありません。
これは、ネイティブの MS ツールで機能します。
SELECT * FROM MyDatabase.dbo.[My Table] WHERE [Active?]= true
その同じクエリは、 Hibernateが括弧で囲まれたフィールド名の内側をパラメーターとしてsession.createSQLQuery
解釈しようとしてエラーをスローすると失敗します。?
バッククォートを試してみました [ Active?\
]
/! でエスケープしてみました。[Active/!?] とその逆 !/ [Active!/?] は効果なし。
また、他の提案についてかなりの数のスタック オーバーフローと Web フォーラムを調べましたが、私が試した他のことはうまくいきませんでした。
これは休止状態のバグですか?括弧内はパラメーターとして解釈できるものではないように思えます。
特定のエラーはクエリの例外です
> Expected positional parameter count: 1, actual parameters:[]
クエリ文字列が添付されています。
joachim-isaksson[Active\\?]
回答しました: