Как добавить список или набор Scala в Cassandra? - PullRequest
0 голосов
/ 25 июня 2018

Схема таблицы моей Кассандры:

    id uuid PRIMARY KEY,
    a text,
    d text,
    h list<text>,
    i  list<blob>,
    p  text,
    t set<text>,
    title text

Я хочу добавить данные из следующих case class

Data(Some(b7a8bc92-0191-4d76-9c11-df8301e20911),d,List(d),List(1),d,Set(d),d,d)

Чтобы добавить данные, я имеюнаписал следующий QueryBuilder код

def insertValues(tableName:String, model:Data):Insert = {
    QueryBuilder.insertInto(tableName).value("id",model.id.get) 
      .value("a",model.a)
      .value("d",model.d)
      .value("h",model.h) 
      .value("i",model.i)
      .value("p",model.p)
      .value("t",model.t)
      .value("title",model.title)
      .ifNotExists(); 
  }

Но я получаю следующую ошибку:

Errorcom.datastax.driver.core.exceptions.InvalidTypeException: значение 3 типа классаscala.collection.immutable. $ colon $ colon не соответствует ни одному типу CQL3

Возможно, я путаюсь между типами данных, используемыми в Scala и Cassandra, но я не знаю, какчтобы исправить это.Например.Одна проблема, которую я вижу, это то, что я не знаю, как преобразовать String в blob, используемое в поле i.

1 Ответ

0 голосов
/ 25 июня 2018

Мне пришлось использовать функции из scala.collection.JavaConverters._.Фрагмент рабочего кода:

  .value("image",seqAsJavaList(model.image))
  .value("tags",setAsJavaSet(model.tags))
...