无法将地图列表插入 Apache Cassandra
cannot insert list of maps to Apache Cassandra
这是我的架构
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 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}]);
issue is with '=' sign in the map objects in the list of maps. How can
I insert it correctly? in java.
map 值应指定为 {key1:val1, key2:val2}
(参见 docs),在您的情况下应为
[{'APP_992984515':30}, {'APP_991415478':23}, {'APP_999095235':12}]
但实际上,您不应该自己生成文字查询,因为这可能是一项复杂的任务 - 您需要正确处理引号等。
更合适的是使用 prepared statements, and bind values - 在这种情况下,所有语法都将由 driver 处理。
另一种可能性是使用 Object 映射器(driver 3.x, driver 4.x 的文档)——在这种情况下,您可以使用 Java objects,所有转换也将由 driver 处理。
这是我的架构
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 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}]);
issue is with '=' sign in the map objects in the list of maps. How can I insert it correctly? in java.
map 值应指定为 {key1:val1, key2:val2}
(参见 docs),在您的情况下应为
[{'APP_992984515':30}, {'APP_991415478':23}, {'APP_999095235':12}]
但实际上,您不应该自己生成文字查询,因为这可能是一项复杂的任务 - 您需要正确处理引号等。
更合适的是使用 prepared statements, and bind values - 在这种情况下,所有语法都将由 driver 处理。
另一种可能性是使用 Object 映射器(driver 3.x, driver 4.x 的文档)——在这种情况下,您可以使用 Java objects,所有转换也将由 driver 处理。