文脈
jOOQ
では、getSql
でパラメータが埋め込まれる前のクエリ文字列を得られます。
このクエリについて、デフォルトでは、select * from table where id = ?
というように、プリペアドステートメントが?
で表現されています。
一方PostgreSQL
では、select * from table where id = $1
というように、プリペアドステートメントは$1
, $2
, ...
形式で要求されます(少なくとも、r2dbc-postgresql
ではこの形式以外受け付けられません)。
そこで、jOOQ
の設定調整によってこの形式でクエリが得られるようにします。
やり方
設定によってはgetSQL(ParamType.NAMED)
で取得できます。
もし上記でダメなら、setRenderNamedParamPrefix
とsetParseNamedParamPrefix
の両方に"$"を設定した上でgetSQL(ParamType.NAMED)
すれば取得できます。
setParamType
にParamType.NAMED
を指定すれば、getSQL(/* 何も指定しない */)
で取得した場合もこの形式になります。
補足
以下を参考にしました。