Я пытаюсь сделать SELECT
в java в моей базе данных Cassandra. Я пытаюсь его:Выберите в Cassandra с Java (драйвер datastax) по timestamp
Statement statement = QueryBuilder.select()
.all()
.from(keySpaceName, tableName)
.where((QueryBuilder.eq("asset", categoryPos)))
.and(QueryBuilder.gte("date", "2006-06-08 00:00:00"))
.limit(10)
.allowFiltering()
.enableTracing();
The CQL запроса (уже работает) является
SELECT * FROM pair_tick.price WHERE asset = 1 and date>='2006-06-08 15:30:00' LIMIT 10;
Когда я пытаюсь выполнить этот запрос, я получаю эту ошибку:
The RuntimeException could not be mapped to a response, re-throwing to the HTTP container
com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (10)
at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:50)
at com.datastax.driver.core.DriverThrowables.propagateCause(DriverThrowables.java:37)
at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:244)
at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:55)
at com.nexow.services.HistoricService.getHistoric(HistoricService.java:86)
at com.nexow.HistoricController.getHistoric(HistoricController.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$TypeOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:185)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
Как может избежать этой ошибки? Спасибо заранее!
Какая у вас колонка? Если это дата (timestamp Cassandra type), то вы должны предоставить java.util.Date для вашего запроса. Проверьте: https://docs.datastax.com/en/developer/java-driver/1.0/java-driver/reference/javaClass2Cql3Datatypes_r.html –
Мне любопытно, почему у вас есть 'allowFiltering()' в этом утверждении? Если это так, потому что 'date' не является частью вашего первичного ключа, вы должны подумать об изменении своей модели и использовании ее (' date') в качестве ключа кластеризации. Если 'date' уже является частью первичного ключа, я думаю,' allowFiltering() 'бесполезен. – grzesiekw