如何从 Phantom 中的 SetColumn[String] select 字段
How to select fields from SetColumn[String] in Phantom
我有一个 Cassandra table Department
列 name_list extends SetColumn[String] with PartitionKey
和 id 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()
}
我有一个 Cassandra table Department
列 name_list extends SetColumn[String] with PartitionKey
和 id 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()
}