Как использовать предложение IN в данных Spring Cassandra

Я пытаюсь запросить таблицу Cassandra, используя предложение IN и аннотацию @Query из Spring Data.

Мой запрос в методе инициализации-

     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 возвращает пустой массив. Что я здесь делаю неправильно?


person saurav    schedule 11.07.2016    source источник


Ответы (1)


Проблема в том, что вам не нужны круглые скобки, если вы связываете полный список, поэтому он должен быть:

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

(?) будет работать, если вы предоставляете одно значение, но вам нужен ?, если вы предоставляете коллекцию.

person Andy Tolbert    schedule 11.07.2016
comment
Совершенно очевидно, что okla хочет использовать коллекцию, переданную в качестве параметра. Теперь мне интересно узнать, работает ли это таким образом или нет. - person Naresh Kumar; 11.07.2016
comment
Вы можете использовать коллекцию в качестве параметра, но у вас не должно быть круглых скобок вокруг маркера привязки, иначе он будет интерпретирован как элемент коллекции, а не сама коллекция. - person Andy Tolbert; 11.07.2016
comment
Отлично, это обучение для меня. Я попробую это сегодня. - person Naresh Kumar; 11.07.2016