Ich benutze PostgreSQL 9.4 und den tollen JSONB-Feldtyp. Ich versuche, ein Feld in einem Dokument abzufragen. Die folgenden Arbeiten in der psql CLIPostgreSQL jsonb, `?` Und JDBC
SELECT id FROM program WHERE document -> 'dept' ? 'CS'
Wenn ich versuche, die gleiche Abfrage über meine Scala App zu laufen, erhalte ich die folgenden Fehler. Ich verwende Play-Framework und Anorm, so dass die Abfrage sieht wie folgt aus
SQL(s"SELECT id FROM program WHERE document -> 'dept' ? {dept}")
.on('dept -> "CS")
....
SQLException: : No value specified for parameter 5. (SimpleParameterList.java:223)
(in meinem eigentlichen Abfragen mehr Parameter sind)
Ich kann durch Gießen meine Parameter dieses Problem umgehen zu geben jsonb
und den Operator @>
verwenden, um die Eindämmung zu überprüfen.
SQL(s"SELECT id FROM program WHERE document -> 'dept' @> {dept}::jsonb")
.on('dept -> "CS")
....
Ich bin nicht so scharf auf die Arbeit herum. Ich weiß nicht, ob es Leistungseinbußen für die Besetzung gibt, aber es ist ein zusätzliches Tippen und nicht offensichtlich.
Gibt es noch etwas, das ich tun kann?
Entweder fügen Sie den Code nicht richtig ein oder Sie haben Syntaxfehler: 'SQL (s" SELECT ID FROM Programm WHERE Dokument -> 'Abt'? {Abt.} .on ('Abt. -> "CS") ' → 'on' muss auf' SQL (...) 'angewendet werden, nicht Teil der Anweisungszeichenfolge sein, da es dort zu sein scheint =' SQL ("..."). On (...) '. Hinweis Diese Stringinterpolation ist nutzlos – cchantep
Ich habe den ganzen Aufruf nicht in SQL eingefügt, weil das für meine Frage irrelevant ist. Es gibt einen Aufruf zum 'apply' nach dem 'on' – Jason
Ich hätte besser einen Code einfügen können, der hat gültige Syntax, wenn Sie eine passende Antwort wünschen – cchantep