有没有办法在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

10-06 07:00