代码之家  ›  专栏  ›  技术社区  ›  Milan Velebit

幻影DSL scala.notimplementederror

  •  0
  • Milan Velebit  · 技术社区  · 7 年前

    我用的是幻影DSL( 2.28.0版,scala 2.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)
    

    我还是个新手,所以任何建议都是有用的,提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Milan Velebit    7 年前

    好吧,在深入研究了源代码之后,我发现 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))
      }
    

    这解决了这个问题,尽管我仍然不确定 为什么 它在第一个案例中失败了,所以任何有适当解释的回答仍然是受欢迎的。

    推荐文章