幻影 DSL scala.NotImplementedError
Phantom DSL scala.NotImplementedError
我正在使用 Phantom DSL(v2.28.0,scala v2.12.7),每次查询我的数据库时,我都会收到以下不明确的错误:
scala.NotImplementedError: an implementation is missing
当我使用 .future()
解决我的查询时不会发生这种情况,在这种情况下查询工作正常。此外,运行 一个 .executableQuery()
方法 returns 一个格式正确的查询,这都表明我未能正确构建模型,但我不明白我做错了什么。示例查询:
工作查询:
db.entries.select.all.future // -> Returns a Future[ResultSet]
db.entries.select.where(_.user_id is userId).future() // -> ^
查询失败:
db.entries.select.all.fetch // -> Err
db.entries.select.where(_.user_id is userId).fetch() // -> Err
db.entries.select.all.fetchRecord // -> Err
...
paginateRecord() 等也是如此。
case class Rec(
id: UUID,
body: String,
time: DateTime,
user_id: Integer
)
abstract class active extends Table[active, Rec] {
object id extends UUIDColumn with PartitionKey
object body extends StringColumn
object time extends DateTimeColumn
object user_id extends IntColumn
}
class BasicDatabase(override val connector: CassandraConnection) extends Database[BasicDatabase](connector) {
object entries extends active with Connector
}
implicit val keySpace: KeySpace = KeySpace("some_keyspace")
implicit val session: Session = db.session
object db extends BasicDatabase(CassandraConnector.default)
我还是新手所以任何建议都是有用的,在此先感谢。
好吧,在深入研究源代码后,我发现抽象 class 的 fromRow()
方法失败了,所以我添加了一个覆盖:
abstract class active extends Table[active, Rec] {
object id extends TimeUUIDColumn
object body extends StringColumn
object time extends DateTimeColumn
object user_id extends IntColumn
override def fromRow(row: Row): Rec = Rec(id(row), body(row), time(row), user_id(row))
}
虽然我仍然不确定 为什么 它在第一种情况下失败了,但我仍然不确定这个问题,所以任何答案仍然欢迎适当的解释。
我正在使用 Phantom DSL(v2.28.0,scala v2.12.7),每次查询我的数据库时,我都会收到以下不明确的错误:
scala.NotImplementedError: an implementation is missing
当我使用 .future()
解决我的查询时不会发生这种情况,在这种情况下查询工作正常。此外,运行 一个 .executableQuery()
方法 returns 一个格式正确的查询,这都表明我未能正确构建模型,但我不明白我做错了什么。示例查询:
工作查询:
db.entries.select.all.future // -> Returns a Future[ResultSet]
db.entries.select.where(_.user_id is userId).future() // -> ^
查询失败:
db.entries.select.all.fetch // -> Err
db.entries.select.where(_.user_id is userId).fetch() // -> Err
db.entries.select.all.fetchRecord // -> Err
...
paginateRecord() 等也是如此。
case class Rec(
id: UUID,
body: String,
time: DateTime,
user_id: Integer
)
abstract class active extends Table[active, Rec] {
object id extends UUIDColumn with PartitionKey
object body extends StringColumn
object time extends DateTimeColumn
object user_id extends IntColumn
}
class BasicDatabase(override val connector: CassandraConnection) extends Database[BasicDatabase](connector) {
object entries extends active with Connector
}
implicit val keySpace: KeySpace = KeySpace("some_keyspace")
implicit val session: Session = db.session
object db extends BasicDatabase(CassandraConnector.default)
我还是新手所以任何建议都是有用的,在此先感谢。
好吧,在深入研究源代码后,我发现抽象 class 的 fromRow()
方法失败了,所以我添加了一个覆盖:
abstract class active extends Table[active, Rec] {
object id extends TimeUUIDColumn
object body extends StringColumn
object time extends DateTimeColumn
object user_id extends IntColumn
override def fromRow(row: Row): Rec = Rec(id(row), body(row), time(row), user_id(row))
}
虽然我仍然不确定 为什么 它在第一种情况下失败了,但我仍然不确定这个问题,所以任何答案仍然欢迎适当的解释。