【jOOQ】getSqlでプリペアドステートメントが$1, $2, ...形式のクエリを取得する【PostgreSQL】

文脈

jOOQでは、getSqlでパラメータが埋め込まれる前のクエリ文字列を得られます。
このクエリについて、デフォルトでは、select * from table where id = ?というように、プリペアドステートメント?で表現されています。

一方PostgreSQLでは、select * from table where id = $1というように、プリペアドステートメント$1, $2, ...形式で要求されます(少なくとも、r2dbc-postgresqlではこの形式以外受け付けられません)。
そこで、jOOQの設定調整によってこの形式でクエリが得られるようにします。

やり方

設定によってはgetSQL(ParamType.NAMED)で取得できます。

www.jooq.org

もし上記でダメなら、setRenderNamedParamPrefixsetParseNamedParamPrefixの両方に"$"を設定した上でgetSQL(ParamType.NAMED)すれば取得できます。

www.jooq.org

www.jooq.org

setParamTypeParamType.NAMEDを指定すれば、getSQL(/* 何も指定しない */)で取得した場合もこの形式になります。

www.jooq.org

補足

以下を参考にしました。

github.com