如何在postgres中将where语句隐藏到函数中?

时间:2019-04-16 08:33:48

标签: postgresql jpa spring-data-jpa

我有一个JSON列,其中包含这样的JSON数组:

[{"type":"NAME","values":[{"value":"123456", "locale":"en"}]}]

我需要按类型= NAME和类似%234%的值进行搜索。

我设法编写了以下查询:

SELECT * FROM my_schema.entry
     JOIN LATERAL json_array_elements(attributes) AS attr (value)
          ON attr.value ->> 'type' = 'NAME'
     JOIN LATERAL json_array_elements(attr -> 'values') AS attr_value(value) 
          ON attr_value ->> 'value' like '%234%';

问题是我在Spring Data JPA规范中看不到如何使用它。

这就是为什么我有一个想法,可以将此查询隐藏在函数中以获取类似信息:

SELECT * FROM my_schema.entry e WHERE entry_name_matches(e, '%234%') IS true;

有什么方法可以“隐藏”函数内部的JOIN LITERAL内容吗?

0 个答案:

没有答案