Spring-data-couchbase - 运行 非临时参数化查询

Spring-data-couchbase - running non ad-hoc parametrized query

是否有可能使用注解@Query 在关闭临时标志的情况下执行参数化 N1QL 查询?

即对于给定查询:

@Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} and author = $author")
List<Comment> getCommentsByAuthor(@Param("author") String author);

如果不是,是否有任何其他方法可以强制 couchbase 在注释查询中使用二级索引(在本示例中作者字段上的索引)?

你似乎混合了一些东西:

  • 参数化查询将与您的代码段中的 @Query 注释一起使用。文档提到了它(在 this section 中的第一个警告块下方)

  • N1QL 二级索引应该由 N1QL 自动获取,具体取决于语句。这里的微妙之处在于 n1ql.filter。 SDC 需要将此类查询限制为异构存储桶中正确的文档集。

  • adhoc 是另外一回事:它是关于准备好的语句。 SDC 不使用该功能,它只会生成具有 adhoc 默认值的 N1QL 查询(据我所知仍然是 true)。

如果您已经记录了由此注释生成的查询并且 运行 对其进行了 EXPLAIN 以有效地查看未提取索引,也许可以尝试反转 WHERE 子句中的两个表达式?