Как выбрать поля из SetColumn[String] в Phantom
У меня есть стол Кассандры Department
с колоннами name_list extends SetColumn[String] with PartitionKey
а также id extends StringColumn with PartitionKey
,
Я хочу получить идентификатор, где запрошенное имя присутствует в name_list.
Я попытался использовать этот код ниже, но не получил никаких результатов
abstract class Departments extends Table[Departments, Department] with RootConnector {
object id extends StringColumn with PartitionKey
object dep_type extends StringColumn
object name_list extends SetColumn[String] with Index
def getByName(name: String) = {
select(_.id, _.name_list)
.where(_.name_list.contains(name))
.allowFiltering()
.one()
}
}
Есть ли способ решить это!!
2 ответа
Решение
Я думаю, что нам не нужно расширять индекс для этого. Это работает нормально с этим тоже:-
object name_list extends SetColumn[String]
Теперь я получаю id и name_list, используя тот же метод, что и выше:-
def getByName(name: String) = {
select(_.id, _.name_list)
.where(_.name_list.contains(name))
.allowFiltering()
.one()
}
Ваша схема должна быть:
object name_list extends SetColumn[String] with Index
Без вторичной индексации Cassandra не поддерживает операции сбора.