我已经使用 Phantom DSL 编写了这个 scala 代码来查询 cassandra
def getByGenreAndYear(genre: List[String], year: Int) : Future[Seq[Movie]] = {
var criteria = select.where(_.genre contains genre.head)
criteria = genre.tail.foldLeft(criteria){(accum, i) => accum.and(_.genre contains i)}
criteria.and(_.year eqs year)
criteria.allowFiltering().fetch()
}
它有效,但我有几个问题
- 设置包含
查询集合是否包含值时。像我所做的那样建立查询条件是否正确?基本上,对于我们要检查的每个值,我都有一个 AND 子句。这可以一次性完成吗
select.where(_.genre contains genreList)
- 排序
我无法生成排序查询。当我尝试做
def getByGenreAndYear(genre: List[String], year: Int) : Future[Seq[Movie]] = {
var criteria = select.where(_.genre contains genre.head)
criteria = genre.tail.foldLeft(criteria){(accum, i) => accum.and(_.genre contains i)}
criteria.and(_.year eqs year)
criteria.orderBy(_.year desc)
criteria.allowFiltering().fetch()
}
代码甚至无法编译