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