繁体   English   中英

在DataStax Enterprise中将PreparedStatement与solr_query结合使用

[英]Using PreparedStatement with solr_query in DataStax Enterprise

我正在尝试通过以下代码将PreparedStatementsolr_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
    )
);

当我执行上面的代码时,出现以下异常: java.lang.IllegalArgumentException: Prepared statement has only 0 variables, 2 values provided

如何在solr_query中正确使用准备好的语句?

我正在使用使用Cassandra 2.0.11.82和Solr 4.6.0.2.8的DataStax Enterprise 4.5.3。 我正在使用DataStax Java驱动程序。

抱歉,CQL不支持在字符串常量内进行变量替换,仅用于完整的字符串常量。 无论如何,在每次执行SELECT语句时都会再次解析Solr查询字符串,因此“准备” Solr查询字符串不会节省任何开销,因此您应该简单地将整个Solr查询字符串作为准备好的语句变量提供,如“ WHERE solr_query = ?”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM