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()
}
コードはコンパイルさえしません