有没有办法在CQL中使用short和byte值?我已经定义了一个带有int字段的表,可以从那里存储和读取short和byte值,但是如果我尝试在准备好的语句中绑定一个值,则会收到错误消息。我也尝试过varint,但还是没有运气。这是我得到的例外:
Invalid type for value 1 of CQL type varint, expecting class java.math.BigInteger but class java.lang.Byte provided
这是表的定义:
CREATE TABLE "Timeline" (
"BucketID" varchar,
"CreationTime" timestamp,
"Attr01" varint,
"Attr02" bigint,
"Attr03" varint,
"Attr04" varint,
"Attr05" uuid,
"Message" text,
PRIMARY KEY (("BucketID", "Attr01"), "CreationTime", "Attr02", "Attr03", "Attr04", "Attr05")
) WITH COMPACT STORAGE AND CLUSTERING ORDER BY ("CreationTime" DESC);
有没有一种方法可以使用短裤/字节,而不是始终强制转换/创建整数?
最佳答案
这是CQL3 data types to Java types图表的链接。
我也尝试过varint,但还是没有运气。
我本以为varint
也应该起作用。但是我可以看到(在上面引用的链接中)varint
映射到BigInteger
,所以在那里没有运气。在任何情况下,似乎short
和基于CQL3基于整数的类型之间的映射都不存在。
但是,如果要存储字节,则可以使用blob
CQL3类型。
编辑20180727
看起来CQL中的smallint
现在映射到java.lang.Short
。