如何检索数据类型为" list"从卡桑德拉的表?

时间:2017-01-12 21:31:04

标签: java scala cassandra cql

我使用Scala连接Cassandra并在其中应用我的查询,我在Cassandra中创建了一个简单的表,它有两列row_id和row_values。 row_id的数据类型为" varchar"和row_values存储元素列表。我在表中插入了一些随机值,并希望检索这些值。 用于创建表:

CREATE TABLE Matrix1(row_id VARCHAR PRIMARY KEY, row_values LIST<VARCHAR>);

插入表格:

INSERT INTO Matrix1(row_id, row_values) VALUES ('abcd3', ['dsf23', 'fsf1','dsdf1']);

现在我想检索值并使用Scala打印它们,我使用代码来保存查询中的值

val results: ResultSet = session.execute("SELECT * FROM Matrix1 where row_id = 'abcd3'") 

现在我要打印&#34; row_id&#34;和&#34; row_values&#34;

var rowid: String = null
var rowval: List[String] = null
for (row <- results) {
      rowid = row.getString("row_id")
      rowval = row.getList("row_values")
      }   

使用此代码我将获得&#34; rowid&#34;中的值因为它是一个String,但是&#34; rowval&#34;有一个错误。如何从ResultSet中检索列(List类型)?

2 个答案:

答案 0 :(得分:7)

尝试将类添加到getList方法:

row.getList("row_values", classOf[String])

答案 1 :(得分:0)

快速阐述: 您指定java类。例如,

val driverDerivedRow = MyRow(row.getString("s"), 
    row.getInt("i"), 
    row.getList("l", classOf[java.lang.Long])
    .asScala.toList.map(Long.unbox)