我正在尝试(使用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);