Создание модели для Cassandra с использованием Phantom DSL

Я читаю эта часть исходного кода.

Это выглядит хорошо, но что, если вместо исполнителя в поле было бы «исполнители», где художники были бы list<text> в кассандре?

Я нашел эту статью, в которой говорится об использовании ListColumn

https://github.com/websudos/phantom/wiki/Collection-columns

но я не уверен, как вы определите индекс в ListColumn

  object genre extends ListColumn(this) with Index[List[String]]

Строка выше не компилируется.


person Knows Not Much    schedule 29.02.2016    source источник


Ответы (1)


Насколько мне известно, вы можете выполнять запросы только с вторичными индексами в столбцах Set, а не в List.

Вот что вы делаете: object genre extends SetColumn[Table, Record, Int](this) with Index[Set[Int]]. Два типа Table и Record должны соответствовать тому, что вы предоставили, когда расширяли CassandraTable чуть выше, например:

class MyTable extends CassandraTable[MyTable, MyRecord] {
  object genre extends SetColumn[MyTable, MyRecord, Int](this) with Index[Set[Int]]
}

Надеюсь, это имеет смысл. Будьте осторожны и с ListColumn, всем столбцам коллекции нужны аргументы TableType и RecordType.

Обновить

В более поздних версиях фантома вам не нужно указывать тип таблицы и записи. Просто сделайте следующее:

class MyTable extends CassandraTable[MyTable, MyRecord] {
  object genre extends SetColumn[Int](this) with Index[Set[Int]]
}

Посмотрите на этот тест для примеров использования индексированных коллекций, а затем эта таблица для примера определения таких таблиц.

С уважением.

person flavian    schedule 29.02.2016