在我的PostgreSQL表中,我有一个json
类型的body_parts
列。我想检查给定的参数是否包含在我的json列中。
select * from worklist_elements we
where body_parts::text like '%"CHEST"%'
然而,它在我的仓库中不工作,我不确定,但它可能是jpql:
@Override
public List<WorklistElementView> test() {
return entityManager.createQuery(
"SELECT DISTINCT w FROM WorklistElementView w " +
"WHERE we.bodyParts::text like '%CHEST%'", WorklistElementView.class)
.getResultList();
}
是否可以使用这个查询(或另一个)来检查存储库中的JSON数组?
2条答案
按热度按时间krugob8w1#
查看此示例是否可解决此问题:
注意,这里有两个操作符-〉表示选择,-〉〉表示 predicate 。当角色混淆时,它们不起作用。
qv7cva1a2#
查询"in your repository"无法工作,因为表别名为
w
,但您引用了we
:此外,不确定未加引号的标识符
bodyParts
和搜索项'%CHEST%'
中的大写字母。您可能需要:参见:
但这是非常昂贵和不明确的。取决于"contained"的确切含义,如果您的JSON列实际上是type
jsonb
,则可以使用索引支持进行更高效的查询。例如...参见: