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

标签 java json postgresql jdbc clojure

我知道如何:

但我不知道如何将它们组合在一起并使用 clojure.java.jdbc 查询 json。

比如我有一个表user,还有一个字段user_info

CREATE TABLE user (id SERIAL,user_info JSON);

然后我找到this blog实现一些协议(protocol),它插入成功!

(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 列?

最佳答案

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

这应该有效:

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

关于java - 如何使用 clojure.java.jdbc 从 postgresql 查询 JSON 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30105452/

相关文章:

java - 获取 Apache POI java.lang.IllegalStateException : Zip File is closed when trying to read a xlsx file

java - 我可以使用 lambda 表达式来累加变量中的总和吗?

postgresql - Elastic Beanstalk - RDS Postgres - 密码验证失败

Java - 循环声明外的逗号运算符

java - 使用 Play Framework 和 Java 解析 Json 数组

javascript - 通过表单提交 JSON 通过 jquery 提交

javascript - Knockout.js 可观察绑定(bind)不更新(使用 JSON 映射)?

ruby-on-rails - 在 Rails 中查找具有多个外键值的记录

sql - 使用多对多关系显示表 1 中的所有记录 - postgresql

java - init() : Couldn't get lock for/var/lib/tomcat6/./tm.out 中的 Atomikos 错误