如何从 Phantom 中的 SetColumn[String] select 字段

How to select fields from SetColumn[String] in Phantom

我有一个 Cassandra table Departmentname_list extends SetColumn[String] with PartitionKeyid extends StringColumn with PartitionKey.

我想获取 id 请求的 name 出现在 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()
      }
}

有什么办法可以解决!!

您的架构必须是:

object name_list extends SetColumn[String] with Index

没有二级索引,Cassandra 不支持集合操作。

我认为我们不需要为它扩展索引。它也适用于此:-

object name_list extends SetColumn[String]

现在,我使用与上述相同的方法获取 id 和 name_list:-

def getByName(name: String) = {
    select(_.id, _.name_list)
      .where(_.name_list.contains(name))
      .allowFiltering()
      .one()
  }