datastax driver を使用して cassandra にマップを挿入しようとしています。地図には価値がある
Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
クエリ ビルダを使用して値を挿入しようとすると、「@」に有効な文字がないことを示す構文エラーが表示されます。
insert ステートメントを使用して cql3 コメントを直接作成し、マップを文字列として作成すると、挿入されます。この問題に関する任意のアイデア
datastax driver を使用して cassandra にマップを挿入しようとしています。地図には価値がある
Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
クエリ ビルダを使用して値を挿入しようとすると、「@」に有効な文字がないことを示す構文エラーが表示されます。
insert ステートメントを使用して cql3 コメントを直接作成し、マップを文字列として作成すると、挿入されます。この問題に関する任意のアイデア
(改訂) 値を追加するときに Map タイプを使用していますか? 以下は、マップ列を含む行を追加するいくつかの方法です。おそらく最後の例はあなたがしようとしていることですか?文字列の使用はデバッグのためだけであるため、それぞれの場合に作成される文字列を確認できます。
session.execute("DROP TABLE imdb.mapper;");
String value = "Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz";
session.execute("CREATE TABLE imdb.mapper (id int, maptest map<int,text>, PRIMARY KEY(id) );");
session.execute("INSERT into imdb.mapper (id,maptest) VALUES (0,{});");
System.out.println("Row inserted with empty map");
session.execute(QueryBuilder.update("imdb","mapper").with(QueryBuilder.put("maptest", 5, value)).
where(QueryBuilder.eq("id", 0)));
System.out.println("Map updated with QueryBuilder");
String s1 = "INSERT into imdb.mapper (id,maptest) VALUES (1,{1 : \'Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz\'});";
System.out.println(s1);
session.execute(s1);
System.out.println("Row inserted as string");
String s2 = "INSERT into imdb.mapper (id,maptest) VALUES (2,{1 : '"+value+"'});";
System.out.println(s2);
session.execute(s2);
System.out.println("Row inserted as strings");
Map<Integer,String> m = new HashMap<Integer,String>();
m.put(1, value);
String s3= QueryBuilder.insertInto("imdb", "mapper").value("id", 3)
.value("maptest", m).toString() ;
System.out.println("S="+s3);
session.execute(s3);
System.out.println("Row inserted as QueryBuilder");