PostgreSQL jsonb, `?` E JDBC
Estou usando o PostgreSQL 9.4 e o incrível tipo de campo JSONB. Estou tentando consultar um campo em um documento. O seguinte funciona na CLI do psql
SELECT id FROM program WHERE document -> 'dept' ? 'CS'
Quando tento executar a mesma consulta no meu aplicativo Scala, estou recebendo o erro abaixo. Estou usando o framework Play e o Anorm, então a consulta fica assim
SQL(s"SELECT id FROM program WHERE document -> 'dept' ? {dept}")
.on('dept -> "CS")
....
SQLException:: nenhum valor especificado para o parâmetro 5. (SimpleParameterList.java:223)
(nas minhas consultas reais existem mais parâmetros)
Eu posso contornar isso lançando meu parâmetro para digitarjsonb
e usando o@>
operador para verificar a contenção.
SQL(s"SELECT id FROM program WHERE document -> 'dept' @> {dept}::jsonb")
.on('dept -> "CS")
....
Não estou muito interessado no trabalho. Não sei se há penalidades de desempenho para o elenco, mas é uma digitação extra e não óbvia.
Há algo mais que eu possa fazer?