"not found: value account" 在使用 squeryl 和 Scala 时

"not found: value account" While using squeryl and Scala

我正在努力做到这一点,这样我就可以从一个模型中获取价值,用于创建另一个模型。这非常简单,但给出了我在扩展 squeryl 模型时遇到的错误。实际上我正在做一些特定于这个模型的计算,但需要另一个模型的值。

我在执行各种版本时遇到错误:

class Bar(
  val bazId: String
  val someValue: String
) extends db.BaseModel {
  val foo: Foo = db.MyDb.foos.lookup(bazId).head

  def this(
    bazId: Baz
  ) = {
    this (
      Baz.id,
      foo.someValue,
    )
  }

错误是:

not found: value foo
[error]       foo.someValue,
              ^

我试过在 Object/singleton 中进行某种查找,在 def this() 内部(这给出了 "Application does not take parameters" 错误),但没有任何效果。看起来很简单,但一点运气都没有。

问题是您试图在构造函数中访问 class 的成员,因为这是在构造对象之前 - 它不可访问。在同伴中这样做应该可以帮助您解决这个问题。类似于:

object Bar {
  val foo(bazId:String): Foo = db.MyDb.foos.lookup(bazId).head
}

class Bar(
  val bazId: String,
  val someValue: String
) extends db.BaseModel {
  val foo: Foo = Bar.foo(bazId)

  def this(
    bazId: String
  ) = {
    this (
      bazId,
      Bar.foo(bazId).someValue
    )
  }
}

或者,如果您确实打算让构造函数接受 class Baz,那么您也可以直接在 Baz 中添加查找方法 - 然后您可以直接调用它直接去查Foo