PostgreSQL jsonb, `?` И JDBC
Я использую PostgreSQL 9.4 и удивительный тип поля JSONB. Я пытаюсь выполнить запрос к полю в документе. Следующие работы в psql CLI
SELECT id FROM program WHERE document -> 'dept' ? 'CS'
Когда я пытаюсь выполнить тот же запрос через приложение Scala, я получаю сообщение об ошибке ниже. Я использую Play Framework и Anorm, поэтому запрос выглядит так
SQL(s"SELECT id FROM program WHERE document -> 'dept' ? {dept}")
.on('dept -> "CS")
....
SQLException:: значение не указано для параметра 5. (SimpleParameterList.java:223)
(в моих реальных запросах есть больше параметров)
Я могу обойти это, приведя мой параметр к типуjsonb
и используя@>
оператор для проверки содержания.
SQL(s"SELECT id FROM program WHERE document -> 'dept' @> {dept}::jsonb")
.on('dept -> "CS")
....
Я не слишком заинтересован в работе вокруг. Я не знаю, есть ли штрафы за исполнение для актеров, но это лишняя типизация и неочевидная.
Есть ли что-нибудь еще, что я могу сделать?