Я использую PostgreSQL 9.4 и потрясающий тип поля JSONB. Я пытаюсь запросить поле в документе. Следующее работает в интерфейсе командной строки psql
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")
....
Я не слишком увлекаюсь работой вокруг. Я не знаю, есть ли штрафы за производительность для приведения, но это дополнительная печать и неочевидность.
Есть ли что-нибудь еще, что я могу сделать?