dire que j'ai la requête CQL3 suivante:Cassandra: tourner la pagination de Java
QueryString = "SELECT id1, id2, link_type, visibility, data, time, version from keyspace.table where id1 = id1 and link_type = link_type and id2 **IN id2s** and time>= minTime and time<= maxTime ORDER BY time desc limit= rowLimit;"
- Si je mets en œuvre comme un
Statement = new Statement (QueryString)
je reçois cette erreur (en raison des crochets dans les id2s: une liste):
pas d'alternative viable à l'entrée '[' (... et link_type = 123456789 et [ID2] IN ...)
---> comment dois-je convertir le List<Long> id2s
à une liste sans parenthèses, mais avec des parenthèses: (item1, item2, item3)
- Si je la requête comme mettre en œuvre un PreparedStatement :
PreparedStatement prepared = session.prepare(query);
la première erreur a été résolu, mais je reçois une autre:
ne peut pas p les requêtes d'âge avec ORDER BY et une restriction IN sur la clé de partition ; vous devez soit supprimer la clause ORDER BY ou IN et trier côté client ou désactiver la pagination pour cette requête
----> comment dois-je tourner la pagination avec une instruction préparée (i su trouver des solutions uniquement avec l'instruction simple: statement.setfetchSize() mais pas avec Prepared Solution)
Si j'utilise une instruction simple, j'ai un problème avec les parenthèses/parenthèses et si j'utilise une instruction préparée pour résoudre le dernier, j'ai un problème avec la pagination.
Une idée?
Pourquoi mettez-vous pas un très grand nombre comme la limite? D'ailleurs vous n'obtenez pas la pagination avec ceci comme vous n'avez pas un décalage défini pour sélectionner les pages suivantes – Matthias
J'ai placé 10000 comme limite et j'ai le même problème. Je reçois ceci seulement avec la clause de commande par limite ... – KNag
Je suis également confronté au même problème. Y at-il un moyen de sortir?, comme nous le faisons «paginer» dans la console? – Shettyh