当前位置: 首页 > 知识库问答 >
问题:

如何在SpringBoot Cassandra的where子句中使用IN运算符

邹麻雀
2023-03-14

我试图运行以下查询从SpringBoot仓库

@Query("select * from c where id1 =?0 and id2 =?1 and id3 =?2 and c1 =?3 and year in :year and month in :month and day in :day and hour in :hour and minute in :minute"
public List<Counter> findCWithinRangeIn(
    @Param("id1") String id1,
    @Param("id2") String id2,
    @Param("id3") String id3,
    @Param("c1") String c1,
    @Param("year") List<Integer> year,
    @Param("month") List<Integer> month,
    @Param("day") List<Integer> day, 
    @Param("hour") List<Integer> hour,
    @Param("minute") List<Integer> minute);

但总是命中错误:绑定变量的数量无效。

请就如何进一步进行提出建议。

注:我确实遵循了Spring Crude的预测结果,即VentoryIds(列表

我想执行如下操作:

select * from c
where id1 ="xyz" and 
      id2 ="abc" and 
      id3 ="pqr" and 
      c1 = "Sample" and
      year IN (2016,2017) and
      month IN (9,10,11) and
      day IN (19,20,24) and
      hour IN (23, 13) and
      minute IN (50, 51, 53)

共有1个答案

姜胤
2023-03-14

如果您不需要指定自定义查询,这可能适合您(基于方法名)

public List<Counter> findAllById1AndId2AndId3AndC1AndYearInAndMonthInAndDayInAndHourInAndMinuteIn(String id1, STring id2, String id3, String c1, List<Long> years, List<Long> months, List<Long> days, List<Long> hours, List<Long> minutes)

注意:在计数器实体中,字段的名称必须与方法名称中指定的属性名称的名称相匹配。

 类似资料:
  • 我以前有一个类似于Rails的查询: 它生成sql查询,如下所示: 现在我想将其更改为使用而不是。我创建了这个: 现在,当我使用空数组时,我得到以下错误:

  • 问题内容: 我正在使用iBATIS创建选择语句。现在,我想用iBATIS实现以下SQL语句: 使用以下方法,语句准备不正确,并且没有结果返回: iBATIS似乎重新构建了该列表,并尝试将其解释为字符串。 如何正确使用IN子句? 问题答案: 这是一篇博客文章,回答您的问题: iBatis:使用SQL IN关键字支持数组或列表参数 在Java中,您应该传入java.util.List。例如

  • 问题内容: 我正在尝试搜索文本和备注的多列,以查找某些我不想看到的特定短语和黑名单短语。 假设下表 前任。我想找到所有提到(在任何领域中)“苹果”但黑名单中的“苹果酱”的故事。 如何在where子句中使用别名?我找不到有关此主题的任何文档: 1)这种方法可行吗? 2)替代方法是否意味着我将在每次行迭代中执行多个字符串连接? 问题答案: 我不能在where子句中使用别名。 这种方法可行吗? 当然,将

  • 问题内容: 在处理大型数据库时,哪个性能更好,还是在SQL子句中? 它们的执行方式有什么不同吗? 问题答案: 我假设您想知道以下两者之间的性能差异: 根据MySQL手册,如果值是常数,则对列表进行排序,然后使用二进制搜索。我可以想象一下,它们以不特定的顺序进行逐一评估。因此在某些情况下速度更快。 最好的了解方法是使用特定数据在数据库中同时对它们进行概要分析,以查看哪种方法更快。 我在具有10000

  • 我是QueryDSL的新手,能够在WHERE-in子句中组装具有多个列的查询,如下所示: 我有主要查询的部分: 但我不知道如何实现where子句。如何在QueryDSL中实现这一点? 提前致谢!

  • 问题内容: 我有一个查询,看起来像这样: 我需要能够在IN子句中对列表进行参数化,以将其写为JDBC PreparedStatement。该列表中可以包含任意数量的名称。 是执行此操作的正确方法: 然后建立一个参数列表?还是有更好(更正确)的方法来做到这一点? 问题答案: 简而言之,您不能开箱即用。但是,使用Spring,您可以做自己想做的事情。请参阅如何通过Spring JdbcTemplate