Ich versuche, Cassandra mit einer Zeitspanne Abfrage abzufragen, und ich bin schlage eine InvalidQueryException wenn die Abfrage von meinem Java-Dienst ausgeführt wird.Java CQL Treiber Ungültige Abfrageausnahme bei der Abfrage Zeitstempel
Lassen Sie uns sagen, dass ich das folgende Schema haben:
CREATE TABLE user (
user_id uuid,
ts timestamp,
data text,
PRIMARY KEY (user_id, ts)
)
cqlsh
Mit ich in der Lage bin Abfrage wie folgt:
SELECT * FROM user WHERE user_id = c37d661d-7e61-49ea-96a5-68c34e83db3a AND Time >= '2016-09-26T16:39:15+0000';
In meinem Java-Dienst, der folgende Code führt ein InvalidQueryException
Statement select = QueryBuilder.select().all()
.from(keyspace, tableName)
.where(eq("user_id", userUUID))
.and(gte("ts", startTime));
session.execute(select);
Der Fehler ausgelöst wird:
SEVERE: Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (24)] with root cause
com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (24)
Wenn ich versuche, die Abfrage als String
auszuführen anstatt eine Statement
, es funktioniert gut. Hier ist ein Beispiel.
String query = "SELECT * FROM user WHERE user_id = c37d661d-7e61-49ea-96a5-68c34e83db3a AND ts >= '2016-09-26T16:39:15+0000';";
Ein paar Fragen:
- Warum eine Ausnahme erhalte ich "Expected 8 oder 0 Byte lang für date" zu sagen? Die CQL documentation sagt, dass wir den Zeitstempel als
integer
oderString
eingeben können. - Was muss ich tun, tun meine Frage zu bekommen arbeiten, um die
Statement
-Klasse? Mein Dienst erhält den Zeitstempel im FormatDate ISO 8601
.
Hallo, haben Sie, wie dieses Problem beheben? Ich bin in letzter Zeit auf dasselbe Problem gestoßen, was sehr frustrierend ist. Die gleiche Abfrage wird in cqlsh ausgeführt, wird aber nicht vom Programm ausgeführt. Wenn ich das Debugprotokoll der Abfrageform kopiere und in cqlsh einfüge, läuft es gut ... – Raj