如何使用clojure.java.jdbc从postgresql查询JSON数据类型?

时间:2015-05-07 15:25:47

标签: java json postgresql jdbc clojure

我理解如何:

但是我不知道怎么把它放在一起并用clojure.java.jdbc查询json。

例如,我有一个表用户和一个字段user_info

CREATE TABLE user (id SERIAL,user_info JSON);

然后我发现this blog推出了一些协议,并且插入成功!

(insert! conn :yxt_user {:user_info {:hello [1 "test" true]}})

但我不知道如何编写代码来查询它,就像这个来自jdbc / query

的sql一样
SELECT * FROM user WHERE data ? 'hello';

不是通过jdbc / execute直接写sql像

(jdbc/execute! db-spec ["UPDATE table SET col1 = NOW() WHERE id = ?" 77])

我试着写这个查询

(jdbc/query conn ["SELECT * FROM user WHERE user_info ? 'hello'"])

我得到了这个

org.postgresql.util.PSQLException: 未设定参数值 1 的内容。

然后我试了

(jdbc/query conn ["SELECT * FROM user WHERE user_info ? 'hello'" "?"])

我得到了这个

org.postgresql.util.PSQLException: ERROR: syntax error at or near "$1"

如何编写查询以过滤其中user_info具有JSON密钥hello的JSON列?

1 个答案:

答案 0 :(得分:2)

如果你有最新的postgresql驱动程序,你可以逃脱?用双??

这应该有效:

 (jdbc/query conn ["SELECT * FROM user WHERE user_info ?? 'hello'"])