【发布时间】:2017-03-24 18:55:39
【问题描述】:
我正在使用 datastax 的 Cassandra Java 驱动程序。我的 Cassandra 仅支持 CQL 2。
我有一个准备好的 INSERT 语句,需要接受地图列表。
这是我的架构:
CREATE TYPE test.snap_guid (
l bigint,
h bigint
);
CREATE TABLE test.t (
id bigint,
snap list<frozen<snap_guid>>,
PRIMARY KEY ((id))
)
这是准备好的语句:
PreparedStatement mysttmt = <client>.prepare("INSERT INTO test.t (id, snap) VALUES (?, ?)");
我知道为了将集合绑定到准备好的语句,我需要创建一个集合并绑定它。我无法将集合括号放在准备好的查询中。例如(对于文本列表):
ArrayList<String> snaps = new ArrayList<>();
snaps.add("AEF34GF665");
// INSERT INTO test.t (id, snap) VALUES (?, ?)
BoundStatement bs = mysttmt.bind(12, snaps);
我的问题是:如何绑定地图列表?如何创建类似下一个的查询?
INSERT INTO test.t (id, snap) VALUES (12, [{l:10,h:50}])
// I know it is impossible to create the following prepared statement:
INSERT INTO test.t (id, snap) VALUES (?, [{l:?,h:?}])
// The list of maps has to be a single bound variable... how???
INSERT INTO test.t (id, snap) VALUES (?, ?)
【问题讨论】:
标签: java cql datastax-java-driver