不能使用postgres jsonb运算符?|使用spring jpa

7nbnzgx9  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(615)

我需要搜索在jsonb数组中至少存在一个数组元素的实体。为此,我可以使用sql查询:

select * from person where roles ?| array['ROLE_1','ROLE_2'];

但对于spring jpa,这是无效的:

@Query(value = "select * from person where roles ?| array['ROLE_1','ROLE_2']", nativeQuery = true)

错误如下:

At least 1 parameter(s) provided but only 0 parameter(s) present in query.

我知道这个问题是特殊性质的?哪个spring在repository方法中解释为必需的参数(假设有findrole1orrole2()方法),但是我如何处理这个问题呢?

kmb7vmvb

kmb7vmvb1#

既然您使用的是postgresql jdbc驱动程序,那么您应该通过将其加倍来避开问号: ??|

pxy2qtax

pxy2qtax2#

我发现内部执行的操作 ?| ,在引擎盖下调用程序 jsonb_exists_any(jsonb , text[]) ,所以可能的解决方案是:

@Query(value = "select * from person where jsonb_exists_any(roles, array['ROLE_1','ROLE_2'])", nativeQuery = true)

相关问题