由以下原因引起:com.datastax.driver.core.exceptions.InvalidQueryException:预期日期的长度为8或0个字节(13) [英] Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (13)
问题描述
我正在尝试使用spring-data-cassandra插入数据。但是我遇到了以下错误,当我的应用程序运行于SpringBoot(版本为1.5.3)
I am trying to insert data with spring-data-cassandra. But I am getting bellow error , when my app is running with SpringBoot(version is 1.5.3)
我在Spring数据中添加了一个实现了CrudResposity的自定义CallHistoriyRespority对象,并且使用save方法插入数据对象
I add a custom CallHistoriyRespority object implemented CrudResposity in spring-data, and use the save method to insert the data object
我找不到任何原因,这个问题使我感到困惑
I can't find any reason and the problem confused me
完整堆栈跟踪:
Caused by: com.datastax.driver.core.exceptions.InvalidQueryException: Expected 8 or 0 byte long for date (13)
at com.datastax.driver.core.Responses$Error.asException(Responses.java:136)
at com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:179)
at com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:177)
at com.datastax.driver.core.RequestHandler.access$2500(RequestHandler.java:46)
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:799)
at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:633)
at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1070)
at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:993)
at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:287)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:295)
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:269)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1294)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:911)
at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131)
at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:645)
at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:580)
at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:497)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:459)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:144)
at java.lang.Thread.run(Thread.java:748)
cassandra表描述如下:
cassandra table description is below :
CREATE TABLE userdevices.callhistorylogs (
userid bigint,
deviceid text,
serialnumber timestamp,
objectid text,
dialtime timestamp,
dialtype int,
duration int,
phone text,
simid int,
targetphone text,
PRIMARY KEY ((userid, deviceid), serialnumber, objectid)
而我的Java配置如下:
and my java configuration is below :
@Table("callhistorylogs")
public class CallHistoryLogPO{
@PrimaryKeyColumn(ordinal = 0 ,type = PrimaryKeyType.PARTITIONED)
private Long userID;
@PrimaryKeyColumn(ordinal = 1,type = PrimaryKeyType.PARTITIONED)
private String deviceID;
@PrimaryKeyColumn(ordinal = 2,type = PrimaryKeyType.CLUSTERED)
private String serialNumber;
@PrimaryKeyColumn(ordinal = 3,type = PrimaryKeyType.CLUSTERED)
private String objectID;
private Date dialTime;
private Call.DialType dialType;
private Integer duration;
private String phone;
private Integer simID;
private String targetPhone;
.....
}
保存方法如下:
CallHistoriesPO callHistories = new CallHistoriesPO();
callHistories.setUserID(20170627L);
callHistories.setDeviceID("160129999");
callHistories.setPhone("17681879236");
......
callHistoryResposity.save(callHistories);
推荐答案
serialNumber
是cassandra中的时间戳,映射到 java.util.Date
,而您正在使用 String
作为 serialNumber
。
serialNumber
is timestamp in cassandra which maps to java.util.Date
, while you are using String
for serialNumber
.
这篇关于由以下原因引起:com.datastax.driver.core.exceptions.InvalidQueryException:预期日期的长度为8或0个字节(13)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!