我用 spring boot、spring data 和 postgresql(v.12.3) 开发了一个应用程序。我有一个包含 jsonb 列的表。此 jsonb 列的每一行都有数组参数,例如:
{
"comboItems": [
{
"id": "1e9b92c2-e97d-4415-b532-18cf7aa6d57c",
"name": "Name1"
},
{
"id": "1e9b92c2-e97d-4415-b532-18cf7aa6d57a",
"name": "Name2"
}
]
}
我想根据 jsonb 列中的“id”值过滤表的行,但我想通过 spring data - jpql 来完成。如果我对此没有解决方案,那么我可以使用本机查询解决方案。
我可以为 jsonb 列的 comboItems 的第一个元素过滤行,但我需要搜索 comboItems 中的所有项目:
@Query(value = "SELECT r "
+ "FROM Table r "
+ "WHERE FUNCTION('jsonb_extract_path_text', r.buyerResponsibleData, 'comboItems', '0', 'id') IN :buyerResponsibles) ")
List<Table> findTables(@Param("buyerResponsibles") List<String> buyerResponsibles);
buyerResponsibles 是一个字符串列表,例如:
final List<String> buyerResponsibles = new ArrayList<>();
buyerResponsibles.add("1e9b92c2-e97d-4415-b532-18cf7aa6d57c");
buyerResponsibles.add("1e9b92c2-e97d-4415-b532-18cf7aa6d57z");
如何通过搜索 jsonb 列的组合项中的所有项目来过滤它?