Как добавить список или набор Scala в Cassandra?

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

    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.


person Manu Chadha    schedule 25.06.2018    source источник


Ответы (1)


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

  .value("image",seqAsJavaList(model.image))
  .value("tags",setAsJavaSet(model.tags))
person Manu Chadha    schedule 25.06.2018
comment
Вы также можете использовать пакет java-driver-scala-extras (соберите его самостоятельно): github. com/datastax/java-драйвер-скала-дополнительно - person Alex Ott; 01.10.2019