kaz*_*azy 2 solr datastax-enterprise datastax-java-driver datastax
我试图用PreparedStatement与solr_query使用下面的代码:
PreparedStatement preparedStatement = cassandraSession.prepare(
"SELECT * FROM users WHERE solr_query = 'username:? OR email:?';"
);
BoundStatement boundStatement = new BoundStatement(preparedStatement);
ResultSet results = cassandraSession.execute(
boundStatement.bind(
username,
email
)
);
Run Code Online (Sandbox Code Playgroud)
当我执行上面的代码时,我得到以下异常:
java.lang.IllegalArgumentException: Prepared statement has only 0 variables, 2 values provided
如何正确使用solr_query的预准备语句?
我使用的是DataStax Enterprise 4.5.3,它使用Cassandra 2.0.11.82和Solr 4.6.0.2.8.我正在使用DataStax Java驱动程序.
抱歉,CQL不支持字符串常量中的变量替换,仅支持完整的字符串常量.无论如何,在每个SELECT语句执行时再次解析Solr查询字符串,因此将Solr查询字符串"准备好"将不会节省开销,因此您应该只将整个Solr查询字符串作为预准备语句变量提供,如"WHERE solr_query = ?".