0
我想使用datastax驱动程序将地图插入cassandra。该地图具有价值语法错误:没有可行的替代方法“@”
英特尔(R)酷睿(TM)睿i5-2520M CPU @ 2.50GHz
如果我尝试使用查询生成器插入我得到的语法错误,说明没有可行的字符值为“@”。
如果我直接使用insert语句构造cql3注释并将该构造映射为字符串,则会插入它。关于这个问题的任何想法
我想使用datastax驱动程序将地图插入cassandra。该地图具有价值语法错误:没有可行的替代方法“@”
英特尔(R)酷睿(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");
我直接插入一个地图对象。那时候,我正面临着这个问题 – Ananth
编辑您的问题以包含代码,这将更容易发现问题。 –