cosmos数据库无法使用IN、spring数据本地查询和数组或集合(Java)进行查询



我正在尝试(使用spring本机查询(为反应存储库spring数据cosmo DB创建findAllId。因为对于ReactiveCosmosPositionory没有实现。

@Query(value = " SELECT *n" +
" FROM   container_name kmn" +
" WHERE  km.id IN (@ids) n" +
" ORDER  BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") String[] ids);

甚至

@Query(value = " SELECT *n" +
" FROM   container_name kmn" +
" WHERE  km.id IN (@ids) n" +
" ORDER  BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") Iterable<String> ids);

但它没有检索任何结果,也没有抛出任何异常。

因此,问题是,如何将IN运算符与cosmos数据库中的spring数据本地查询和集合或数组一起使用,而不必采取变通方法。

您应该使用array_contents

@Query(value = " SELECT *n" +
" FROM   container_name kmn" +
" WHERE  array_contains(@ids, km.id, true) n" +
" ORDER  BY km.createdDate DESC ")
Flux<ContainerData> findAllById(@Param("ids") Iterable<String> ids);

最新更新