*Hello,* *I am using DataStax Java Driver and can not execute "save" command with the object mapper.*
*I have next table:* CREATE TABLE media_upload.audio_info ( swift_id blob, size bigint, audio_id blob, last_succeed_segment bigint, PRIMARY KEY (swift_id) ); *Here is my table in Java:* package com.loader.entity.tmp; import com.datastax.driver.mapping.annotations.Column; import com.datastax.driver.mapping.annotations.PartitionKey; import com.datastax.driver.mapping.annotations.Table; import com.datastax.driver.mapping.annotations.Transient; import javax.xml.bind.DatatypeConverter; import java.nio.ByteBuffer; @Table(keyspace = "media_upload", name = "audio_info", readConsistency = "QUORUM", writeConsistency = "QUORUM", caseSensitiveKeyspace = false, caseSensitiveTable = false) public class AudioInfo{ private ByteBuffer swiftId; private Long size; private ByteBuffer audioId; private Long lastSucceedSegment; @PartitionKey @Column(name = "swift_id") public ByteBuffer getSwiftId() { return swiftId; } @Column(name = "size") public Long getSize() { return size; } @Column(name = "audio_id") public ByteBuffer getAudioId() { return audioId; } @Column(name = "last_succeed_segment") public Long getLastSucceedSegment() { return lastSucceedSegment; } public void setSwiftId(ByteBuffer swiftId){ this.swiftId=swiftId; } @Transient public String getHexSwiftId() { return DatatypeConverter.printHexBinary(swiftId.array()); } @Transient public void setSize(Long size){ this.size=size; } @Transient public String getHexAudioId() { return DatatypeConverter.printHexBinary(audioId.array()); } @Transient public void setAudioId(ByteBuffer audioId){ this.audioId=audioId; } @Transient public void setLastSucceedSegment(Long lastSucceedSegment){ this.lastSucceedSegment=lastSucceedSegment; } @Transient @Override public String toString() { return "{swift_id='"+getHexSwiftId()+ "',size='"+getSize()+ "',audio_id='"+getHexAudioId()+ "',last_succeed_segment='"+lastSucceedSegment+"'}"; } } *Here is what I am doing to save AudioInfo:* AudioInfo audioInfo = new AudioInfo(); audioInfo.setSwiftId(ByteBuffer.allocate(Long.BYTES).putLong(123)); audioInfo.setAudioId(ByteBuffer.allocate(Long.BYTES).putLong(124)); audioInfo.setLastSucceedSegment(0L); audioInfo.setSize(100L); mapper.save(audioInfo); *After "mapper.save(audioInfo);" I am getting an error:* com.datastax.driver.core.exceptions.InvalidQueryException: Key may not be empty 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:174) at com.datastax.driver.core.RequestHandler.access$2600(RequestHandler.java:43) at com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:793) at com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:627) at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1012) at com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:935) at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321) at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:266) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321) at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:293) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:267) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:321) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1280) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:328) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:890) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:131) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:564) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:505) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:419) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:391) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:112) at java.lang.Thread.run(Thread.java:745) *The strange thing happens when I am using next code:* AudioInfo audioInfo = new AudioInfo(); audioInfo.setSwiftId(ByteBuffer.allocate(Long.SIZE).putLong(123)); audioInfo.setAudioId(ByteBuffer.allocate(Long.SIZE).putLong(124)); audioInfo.setLastSucceedSegment(0L); audioInfo.setSize(100L); mapper.save(audioInfo); *It adds without error but in the database I see that both swift_id and audio_id have next value:* 0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 *What am I doing wrongly?* *Sincerely,* *Alexandr*