无法将Map列表插入到apache cassandra

mzillmmw  于 2021-06-13  发布在  Cassandra
关注(0)|答案(1)|浏览(298)

这是我的模式

CREATE TABLE app_category_agg (
    category text,
    app_count int,
    sp_count int,
    subscriber_count int,
    window_revenue bigint,
    top_apps frozen <list<map<text,int>>>,
    PRIMARY KEY (category)
);

java生成的insert查询是这样的

INSERT INTO analytics_info.app_category_agg (category,app_count,sp_count,subscriber_count, window_revenue,top_apps) VALUES ('Entertainment',3,2,65,1620,[{APP_992984515=30}, {APP_991415478=23}, {APP_999095235=12}]);

问题是“=”在Map列表中的Map对象中签名。如何正确插入?在 java 。

eeq64g8w

eeq64g8w1#

Map值应指定为 {key1:val1, key2:val2} (见文件),在你的情况下,它应该是一个

[{'APP_992984515':30}, {'APP_991415478':23}, {'APP_999095235':12}]

但实际上,您不应该自己生成文本查询,因为这可能是一项复杂的任务—您需要正确处理引号等。
更合适的方法是使用准备好的语句和绑定值—在本例中,所有语法都将由驱动程序处理。
另一种可能是使用对象Map器(doc for driver 3.x,driver 4.x)-在这种情况下,您可以使用java对象处理表中的行,所有转换也将由驱动程序处理。

相关问题