Spring-data-couchbase - 运行非ad-hoc参数化查询

时间:2017-02-06 12:31:40

标签: java spring couchbase n1ql spring-data-couchbase

是否有可能使用注释@Query关闭adhoc标志执行参数化N1QL查询?

即。对于给定的查询:

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

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

1 个答案:

答案 0 :(得分:1)

你似乎混合了一些东西:

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

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

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

如果您已记录此注释生成的查询并对其运行EXPLAIN以有效地看到索引未被拾取,可能尝试反转WHERE子句中的两个表达式?