关于使用Spring Data JPA的可能方法,规范,postgresql的JSONB和横向联接功能,我还有一个更高级的问题。
可以在以下位置找到此类查询的过度简化版本: PostgreSQL aggregate JSON recordset keys by row
select id, sum(a), sum(b)
from jsontable j
CROSS JOIN LATERAL
json_to_recordset(j.data) as x(a integer, b integer)
group by id
到目前为止,我们已经使用具有上述功能的本机查询进行工作,并且没有任何问题。我们还使用了规范API来过滤掉可选(可为空)查询过滤器而没有任何问题。但是,我们已经达到了将两者结合的地步。 AFAIK,大多数功能不适用于本机查询,因此我们需要将本机查询转换为JPQL。但是,似乎不可能在JPQL中使用这些新功能。当然,我们可以将Specification用于简单的JSONB操作(How do I use spring data jpa to query jsonb column?),但似乎无法在join子句中使用它。
使用任何替代方案都不是不可能的事情(例如,我对queryDSL进行了一些研究,尽管这似乎也是一个死胡同),所以随时提出它们。
TL; DR:我们希望将Spring数据JPA(或等效版本)中的Spring规范与使用JSONB和横向联接的PostgreSQL查询结合起来。