是否有可能使用注释@Query关闭adhoc标志执行参数化N1QL查询?
即。对于给定的查询:
@Query("#{#n1ql.selectEntity} WHERE #{#n1ql.filter} and author = $author")
List<Comment> getCommentsByAuthor(@Param("author") String author);
如果没有,是否有任何其他方法可以强制couchbase在注释查询中使用二级索引(在此示例中为作者字段的索引)?
答案 0 :(得分:1)
你似乎混合了一些东西:
参数化查询将与您的代码段中的@Query
注释一起使用。文档提到它(在this section中的第一个警告块下面)
N1QL二级索引应由N1QL自动获取,具体取决于语句。这里的微妙之处在于n1ql.filter
。 SDC需要将此类查询限制在异构存储桶中的正确文档集。
adhoc
是另一回事:它是关于准备好的陈述。 SDC不使用该功能,它只会产生具有adhoc默认值的N1QL查询(据我所知,它仍为true
。
如果您已记录此注释生成的查询并对其运行EXPLAIN以有效地看到索引未被拾取,可能尝试反转WHERE子句中的两个表达式?