【问题标题】:Phantom DSL scala.NotImplementedError幻影 DSL scala.NotImplementedError
【发布时间】:2019-04-23 09:09:39
【问题描述】:

我正在使用 Phantom DSL(v2.28.0,scala v2.12.7),每次查询我的数据库时,我都会收到以下模棱两可的错误:

scala.NotImplementedError: 缺少一个实现

当我使用.future() 解决我的查询时,不会发生这种情况,在这种情况下查询工作正常。此外,运行.executableQuery() 方法会返回格式正确的查询,这一切都表明我未能正确构建模型,但我不明白我做错了什么。示例查询:

工作查询:

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)

我还是个新手,所以任何建议都很有用,在此先感谢。

【问题讨论】:

    标签: scala cassandra phantom-dsl


    【解决方案1】:

    好吧,我研究了源码,发现抽象类的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))
      }
    

    这解决了这个问题,尽管我仍然不确定为什么在第一种情况下它失败了,所以仍然欢迎任何带有适当解释的答案。

    【讨论】:

    • 上次我遇到此错误时,我的案例类中存在类型不匹配。您是否尝试将案例类中的 Integer 更改为 Int
    • @Wizard 是的,我做了,但无济于事
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 1970-01-01
    • 2020-02-27
    • 2016-09-14
    • 1970-01-01
    • 2016-12-27
    • 2017-08-06
    • 1970-01-01
    相关资源
    最近更新 更多