“找不到:值帐户”使用squeryl和Scala时

时间:2017-04-18 23:33:04

标签: scala squeryl

我正在尝试这样做,这样我就可以从一个模型中获取一个值到另一个模型的创建中。这是非常简化的,但是给出了我在扩展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不带参数”错误),以及其他一些东西,但没有任何工作。看起来很简单,但根本没有运气。

1 个答案:

答案 0 :(得分:2)

问题是你试图在构造函数中访问类的成员,因为这是在构造对象之前 - 它是不可访问的。在伴侣中完成它应该可以帮助你解决这个问题。类似的东西:

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
    )
  }
}

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