在jsonb中寻找json键的值

时间:2018-07-30 21:48:50

标签: postgresql jpa predicates

我正在使用jpa的criteriabuilder,并且我想在jsonb列中查找json字段的值。 jsonb看起来像这样:

[{"field1":"value1","field2":"value2"},{"field3":"value3","field4":"value4"}]

我开始创建谓词,但出现错误。

predicates.add( builder.like(
    builder.function("JSON_EXTRACT", String.class, root1.get("jsonBColumn"),                          
    builder.literal("\"value3\"")), "%" + searchValue + "%"));

我遇到的错误是

  

org.postgresql.util.PSQLException:错误:函数json_extract(jsonb,   字符变化)不存在提示:没有函数与给定的匹配   名称和参数类型。您可能需要添加显式类型转换。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

这将有助于:

`predicate.getExpressions()。add(cb.like(cb.function(“ jsonb_extract_path_text”,String.class,root.get(“ jsonBColumn”),cb.literal(this.searchKey)),“%” + this.searchValue +“%”));