【问题标题】:How to use IN clause in Spring data Cassandra [duplicate]如何在Spring数据Cassandra中使用IN子句[重复]
【发布时间】:2016-11-13 10:20:03
【问题描述】:

我正在尝试使用 IN 子句和 Spring Data 中的 @Query 注释查询 Cassandra 表

我在 init 方法中的查询-

     session = cassandraSessionFactory.getSession();
     statementmyList = session.prepare("select * from my_file_content where my_content IN (?);");

尝试用boundStatement绑定查询-

  final BoundStatement boundStatement = DaoConstants.getBoundStatement(statementmyList);

  try
  {
   List<Row> rowList =
      session
          .execute(
              boundStatement
                  .bind(myList))
          .all();

          // myList = "'04748558-0eb3','531aaf2bf6b782f95e2e','6fc98ac2'"     

}

rowList 返回空数组。我在这里做错了什么?

【问题讨论】:

    标签: java cassandra spring-data datastax-java-driver spring-data-cassandra


    【解决方案1】:

    问题是,如果要绑定完整列表,则不需要括号,因此应该是:

    session = cassandraSessionFactory.getSession();
    statementmyList = session.prepare("select * from my_file_content where my_content IN ?;");
    

    如果您提供单个值,(?) 可以工作,但如果您提供集合,则需要?

    【讨论】:

    • 这很确定 okla 想要使用作为参数传递的集合。现在我很想知道它是否可以这样工作。
    • 你可以使用一个集合作为参数,但你不应该在绑定标记周围加上括号,否则它将被解释为集合上的一个元素,而不是集合本身。
    • 太好了,这对我来说是一个学习。我今天会试试这个。
    猜你喜欢
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2018-06-08
    • 2010-10-20
    • 2016-09-27
    • 2021-10-15
    相关资源
    最近更新 更多