使用条件查询在 JSONB 列上'LIKE'表达式



我正在尝试将JSONB与CriteriaQuery一起使用,并尝试根据标准生成器来实现此查询

select *
from customer
where exists (
select true
from jsonb_array_elements(customer.contacts::jsonb)
where value::text like '%2%'
);

但在条件查询中,似乎并没有办法从函数执行结果中关联子查询。

您知道如何在条件查询中实现此查询,或者如何针对JSONB列生成"LIKE"表达式吗?

JSONB列的格式如下:[{"type": "PHONE", "value": "1122"}, {"type": "PHONE", "value": "3344"}]

查询应该是一个条件查询实例。

提前谢谢。

试试这样的东西:

select *
from customer
cross join lateral jsonb_array_elements(contacts) as x(jcontact)
where jcontact->>'value' like '%2%';

看看结果。如果有多个联系人具有value like '%2%',则会得到多行,但您可以消除具有distinct的联系人,并将其限制为实际需要的列。

至于HIbernate或criteriaquery,我在这方面帮不了你。ORM是个非常糟糕的主意。

相关内容

  • 没有找到相关文章

最新更新