PostgreSQL jsonb, `?` Y JDBC
Estoy usando PostgreSQL 9.4 y el increíble tipo de campo JSONB. Estoy tratando de consultar un campo en un documento. Lo siguiente funciona en la CLI de psql
SELECT id FROM program WHERE document -> 'dept' ? 'CS'
Cuando intento ejecutar la misma consulta a través de mi aplicación Scala, aparece el siguiente error. Estoy usando Play Framework y Anorm, por lo que la consulta se ve así
SQL(s"SELECT id FROM program WHERE document -> 'dept' ? {dept}")
.on('dept -> "CS")
....
SQLException:: No se especificó ningún valor para el parámetro 5. (SimpleParameterList.java:223)
(en mis consultas reales hay más parámetros)
Puedo evitar esto mediante la conversión de mi parámetro para escribirjsonb
y usando el@>
operador para verificar la contención.
SQL(s"SELECT id FROM program WHERE document -> 'dept' @> {dept}::jsonb")
.on('dept -> "CS")
....
No estoy demasiado interesado en el trabajo. No sé si hay penalizaciones de rendimiento para el elenco, pero es un tipeo adicional y no es obvio.
¿Hay algo mas que pueda hacer?