我需要搜索在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()方法),但是我如何处理这个问题呢?
2条答案
按热度按时间kmb7vmvb1#
既然您使用的是postgresql jdbc驱动程序,那么您应该通过将其加倍来避开问号:
??|
pxy2qtax2#
我发现内部执行的操作
?|
,在引擎盖下调用程序jsonb_exists_any(jsonb , text[])
,所以可能的解决方案是: