我在cassandra中执行了一个查询,其中我有3列,第3列的列表数据类型如下:
||Col 1 (varchar)||Col 2 (varchar)||Col 3 (list)|| |value 1.1|value 2.1|{"option 1":"value 1","option 2":"value 2"}
我想获取3列的值并存储在某个变量中我尝试了.getlist选项,但它不起作用并引发异常,因此无法找到任何其他方法。因此无法附加示例代码。
gzjq41n41#
alex很好地说明了数据是列表格式的,而不是Map格式的。也就是说,我将发布datastaxjava驱动程序v3.6的代码,展示如何同时收回列表和Map。首先,我创建了一个包含这两种类型集合的示例表,并添加了一些值:
aaron@cqlsh:stackoverflow> CREATE TABLE collections (key TEXT PRIMARY KEY, testList LIST<TEXT>, testMap MAP<TEXT,TEXT>); aaron@cqlsh:stackoverflow> INSERT INTO collections (key,testList,testMap) VALUES ('a',['one','two','three'],{'option 1':'value 1','option 2':'value 2','option 3':'value 3'});
我通过一个简单的查询验证了它的有效性:
aaron@cqlsh:stackoverflow> SELECT key, testlist, testmap FROM stackoverflow.collections WHERE key='a'; key | testlist | testmap -----+-------------------------+----------------------------------------------------------------------- a | ['one', 'two', 'three'] | {'option 1': 'value 1', 'option 2': 'value 2', 'option 3': 'value 3'} (1 rows)
我建立了一个简单的应用程序,使用自定义 CassandraConnection 类,该类处理集群和会话对象、连接和运行简单的 session.execute(strQuery); . 在我的java测试应用程序中,这是可行的:
CassandraConnection
session.execute(strQuery);
String strSELECT2 ="SELECT key, testlist, testmap " + "FROM stackoverflow.collections WHERE key='a'"; ResultSet rows2 = conn.query(strSELECT2); for (Row row : rows2) { System.out.print( row.getString("key") + " " + "\nList:" + row.getList("testlist", String.class).toString() + " " + "\nMap:" + row.getMap("testmap", String.class, String.class)); }
并产生以下结果:
a List:[one, two, three] Map:{option 1=value 1, option 2=value 2, option 3=value 3}
1条答案
按热度按时间gzjq41n41#
alex很好地说明了数据是列表格式的,而不是Map格式的。也就是说,我将发布datastaxjava驱动程序v3.6的代码,展示如何同时收回列表和Map。
首先,我创建了一个包含这两种类型集合的示例表,并添加了一些值:
我通过一个简单的查询验证了它的有效性:
我建立了一个简单的应用程序,使用自定义
CassandraConnection
类,该类处理集群和会话对象、连接和运行简单的session.execute(strQuery);
. 在我的java测试应用程序中,这是可行的:并产生以下结果: