J'utilise PreparedStatement et BoundStatement pour exécuter certaines requêtes Cassandra. Le problème est, j'essaie d'utiliser une limite sur ceux-ci. Voilà ce que j'ai:Cassandra BoundStatement avec limite
selectByDatasetIdAndTimePreparedStatement = getSession().prepare(
QueryBuilder.select()
.all()
.from(KEYSPACE_NAME, TABLE_NAME)
.where(QueryBuilder.eq(AFFILIATION_ID_COLUMN, QueryBuilder.bindMarker()))
.and(QueryBuilder.eq(DATASET_ID_COLUMN, QueryBuilder.bindMarker()))
.and(QueryBuilder.lte(TIME_COLUMN, QueryBuilder.bindMarker()))
//.limit(QueryBuilder.bindMarker())
);
Chaque fois que je dois exécuter la requête, j'appelle cette fonction:
public Statement buildSelectByDatsetIdAndTimePreparedStatment(String affiliationId, String datasetId, Long time, int limit)
{
BoundStatement boundStatement = selectByDatasetIdAndTimePreparedStatement
.bind()
.setString(AFFILIATION_ID_COLUMN, affiliationId)
.setString(DATASET_ID_COLUMN, datasetId)
.setLong(TIME_COLUMN, time);
databaseManager.applyReadStatementsConfiguration(boundStatement);
return boundStatement;
}
Cependant, cela ne fonctionne que sans la clause limite dans le premier extrait de code. Je ne sais pas comment spécifier la limite dans le deuxième extrait. Je ne veux pas utiliser de chaîne, quelque chose comme
databaseManager.getSession().execute("SELECT * FROM myTable where ... limit 10);
Y at-il un moyen de le faire en utilisant BoundStatement? Je ne vois rien comme BoundStatement.limit() ou setLimit().
Merci, Serban
Génial! Merci! –