Cassandra 3.4 теперь предлагает оператор LIKE с помощью пользовательского индекса.Cassandra 3.4 Оператор Java LIKE
Он отлично работает в моем примере тестирования, используя cqlsh с чем-то вроде SELECT * FROM table WHERE indexed_column LIKE '%VALU%'
. Я настроил индекс, и все это прекрасно работает.
Как это сделать в драйвере Java (я использую версию 3.0.2) с динамическими значениями? Мой запрос работает с использованием QueryBuilder и использование PreparedStatements при использовании буквенного значения, как так (примера PS но QueryBuilder работает с буквенными значениями также):
PreparedStatement ps = PreparedStatement("SELECT * FROM table WHERE indexed_column LIKE '%VALU%'");
Но не хочу ли я использовать? для привязки значения (например, bind '% VAL%') в QueryBuilder или с помощью PreparedStatements. Например.
PreparedStatement ps = PreparedStatement("SELECT * FROM table WHERE indexed_column LIKE ?");
BoundStatement boundStatement = new BoundStatement(ps);
cassandraSession.execute(boundStatement.bind('%VAL%');
Я получаю следующее сообщение об ошибке:
com.datastax.driver.core.exceptions.SyntaxError: line 1:53 mismatched input '?' expecting STRING_LITERAL (...test.table WHERE indexed_column LIKE [?];)
Право на деньги - спасибо. – JAC2703