1

Ich versuche, Daten mit Feder-Daten-Cassandra einzufügen. Aber ich bin immer unten Fehler, wenn mein app mit SpringBoot läuft (Version 1.5.3)verursacht durch: com.datastax.driver.core.exceptions.InvalidQueryException: Erwartete 8 oder 0 Byte lang für Datum (13)

ich ein benutzerdefinierten CallHistoriyRespority Objekt implementiert CrudResposity im Frühjahr-Daten hinzufügen, und speichern Sie die Methode verwenden, die Daten einfügen Objekt

ich aus irgendeinem Grund nicht finden können und das Problem verwirrt mich

Voll Stack-Trace:

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 Tabellenbeschreibung ist unter:

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) 

und meine Java-Konfiguration ist unten:

@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; 
..... 
} 

Speichermethode ist unten:

CallHistoriesPO callHistories = new CallHistoriesPO(); 
    callHistories.setUserID(20170627L); 
    callHistories.setDeviceID("160129999"); 
    callHistories.setPhone("17681879236"); 
    ...... 
    callHistoryResposity.save(callHistories); 
+0

'serialNumber' ist Zeitstempel, die auf' java.util.Date' abbildet .... während Sie mit 'String' –

+0

Sie haben Recht, ich dieses Problem gelöst haben, danke. – doubleview

+0

Wenn Sie möchten, können Sie diese Frage löschen ... sonst kann ich meinen Kommentar als Antwort posten ... so dass die Frage nicht unbeantwortet bleibt ... Danke –

Antwort

2

serialNumber ist Zeitstempel in Cassandra, die java.util.Date abbildet, während Sie String für serialNumber verwenden.

cql-to-java-type-mapping

+0

Beachten Sie, dass 'timestamp' auch auf' java.time.Instant' abgebildet wird – withoutclass

Verwandte Themen