我有一个表 synonyms_table ,其中包含 jsonb 列同义词,它是一个 json 数组。 此列中的条目看起来像这样:[“good”、“nice”、“awesome”]
我有疑问 从 synonym_table 中选择 *,其中 synonym::jsonb ? ‘好’;
我想使用 CriteriaBuilder 创建它。 我怎样才能做到这一点?任何帮助将不胜感激。
Specification specification = (root, query, criteriaBuilder) -> {
return criteriaBuilder.equal(criteriaBuilder.function("jsonb_extract_path_text", String.class, root.<String>get("synonym"), criteriaBuilder.literal("synonym")), 'good');
};
但这不起作用 出现以下错误:
Caused by: org.postgresql.util.PSQLException: ERROR: function jsonb_extract_path_text(character varying, character varying) does not exist
我只是假设,但我认为问题是你的列是一个纯字符串数组,而不是数组或对象或
{..}
json。
我已经检查了
jsonb_array_elements
函数,但我能找到的唯一示例是其中包含复杂对象的数组。
您要么寻找更多这样的例子
jsonb_array_elements
,看看是否有帮助。
或者
如果您以简单的方式变换列
varchar[]