我正在使用datastax'Cassandra Java驅動程序。我的Cassandra僅支持CQL 2。cassandra java將地圖集合綁定到準備好的語句
我有一個準備好的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 (?, ?)