1

私はファントムウィキで提供されているsmipleコードをいじっています。私が試したのは次のとおりです。

import com.websudos.phantom.dsl._

case class Student(id: UUID, name: String)

class Students extends CassandraTable[Students, Student] {
  object id extends UUIDColumn(this) with PartitionKey[UUID]
  object name extends StringColumn(this)

  def fromRow(row: Row): Student = {
    Student(id(row), name(row))
  }
}

object Students extends Students with Connector {

  def getByName(name: String): Future[Option[Student]] = {
    select.where(_.name eqs name).one()
  }
}

しかし、私のIDEは言い続けCannot resolve symbol where、コンパイラは言いますvalue where is not a member of com.websudos.phantom.builder.query.RootSelectBlock[Students,Student]

私は Scala2.11.6と Phantomを使用し1.10.1ています。すべてのヘルプが大歓迎です!

4

2 に答える 2

1

基本的な Cassandra の問題を見逃していnameます。インデックス付きの列ではないため、クエリを実行できません。定義したばかりのテーブルに基づいて、実行しようとしているクエリは無効であり、Cassandra は実行時にそれを通知します。

Phantom は、コンパイル時にほとんどの悪いことを防ぎます。Cassandra がどのように機能するかを理解するには、このブログ シリーズを一読する価値があります。

物事を大局的に見ると、テーブルにwhere有効な唯一のクエリは次のとおりです。Students

def getById(id: UUID): Future[Option[Student]] = {
  select.where(_.id eqs id).one()
}
于 2015-08-12T08:27:41.423 に答える