1

J'essaie d'insérer des données avec spring-data-cassandra. Mais je reçois l'erreur ci-dessous, lorsque mon application est en cours d'exécution avec SpringBoot (version 1.5.3)Causé par: com.datastax.driver.core.exceptions.InvalidQueryException: attendu 8 ou 0 octet de long pour la date (13)

ajouter un objet CallHistoriyRespority personnalisé CrudResposity mis en œuvre au printemps-données, et d'utiliser la méthode de sauvegarde pour insérer les données objet

Je ne peux trouver aucune raison et le problème me confondre

trace de la pile complète:

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) 

Description de la table est cassandra ci-dessous:

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) 

et ma configuration java est ci-dessous:

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

méthode de sauvegarde est ci-dessous:

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

'serialNumber' est timestamp qui mappe' java.util.Date' .... pendant que vous utilisez 'CHAINE' –

+0

vous avez raison, je l'ai résolu ce problème, merci. – doubleview

+0

si vous voulez vous pouvez supprimer cette question ... sinon je peux poster mon commentaire comme réponse ... de sorte que la question ne sera pas sans réponse ... Merci –

Répondre

2

serialNumber est timestamp dans cassandra qui mappe java.util.Date, pendant que vous utilisez String pour serialNumber.

cql-to-java-type-mapping

+0

Notez que 'timestamp' va également correspondre à' java.time.Instant' – withoutclass