2016-04-15 12 views
0

Ich habe ein Problem beim Filtern von Zeilen nach Eigenschaft in einem jsonb Spaltentyp.Überprüfen Sie, ob eine Eigenschaft in einer JSONB-Spalte existiert

Ich versuchte dies:

jsonb_column ? 'my_property' 

Auf pgadmin oder psql es funktioniert gut, aber über einen JDBC-Treiber wirft sie den Fehler:

org.hibernate.QueryException: Expected positional parameter count: 3, actual parameters: [] 

Das Problem mit dem ? Operator ist. Also, gibt es eine andere Möglichkeit, das zu tun?

+0

stellen Sie sicher, eine geeignete Version des Treibers haben; es wäre gut, wenn versuchen, Code-Snippet enthalten Sie verwenden –

+0

Ich änderte meinen Treiber auf den neuesten (9.4.1208), aber es hat auch nicht funktioniert. – fdam

Antwort

0

gut, nach ein paar Recherchen und keine Lösung für mein Problem mit dem "?" Betreiber über de JDBC-Treiber, löste ich es einen anderen Weg, um die Funktion

jsonb_object_keys

gibt alle Schlüssel meines json Element, und dann jedes I-Filter den <@ Operator wie verwenden:

ARRAY(SELECT jsonb_object_keys(jsonb_column)) <@ '{property1,property2,property3}' 
Verwandte Themen