私は、既存の接続でファントムを使用できるように、次をやってしまった:代わりにファントム「テーブル」形質の使用される新しい特性PhantomTableを定義
。彼らはPhantomTable形質を拡張することにより定義された私のテーブル
trait PhantomTable[T <: PhantomTable[T, R], R] extends CassandraTable[T, R] with TableAliases[T, R]
RootConnectorの除去を除いて同一であり、また、オブジェクトにそれを作りました。ここで私は、暗黙の鍵空間限りFooTableオブジェクトのすべての指名手配の方法を使用することが可能であるとセッションがスコープ内に存在していることを後
...
import com.outworkers.phantom.macros.TableHelper._
final case class Foo(id: String, name: Option[String])
sealed class FooTable extends PhantomTable[FooTable, Foo] {
override val tableName = "foo"
object id extends StringColumn with PartitionKey
object name extends OptionalStringColumn
}
object FooTable extends FooTable
をコンパイルするために取得するTableHelperマクロのすべてを輸入しなければなりませんでした。
これは、我々はまた、ファントム-DSLでlagomを使用することを必要とする表が
object Main extends App {
val ks = "foo_keyspace"
val cluster = Cluster.builder().addContactPoints("127.0.0.1").build()
implicit val keyspace: KeySpace = KeySpace(ks)
implicit val session: Session = cluster.connect(ks)
val res = for {
_ <- FooTable.create.ifNotExists.future
_ <- FooTable.insert.value(_.id, "1").value(_.name, Some("data")).future
row <- FooTable.select.where(_.id eqs "1").one
} yield row
val r = Await.result(res, 10.seconds)
println(s"Row: $r")
}
を使用する方法を示していますシンプルなメインプログラムです。たぶんあなたはlagomも使用しています。 lagomも使用している場合は、lagomのタグを追加してください。ありがとう –
いいえ、Lagomを使用していません –
@JohanJ DBクラスを使用すると何が問題になりますか?私はよりよく理解したいと思います。 – flavian