Scala:编译错误:无法解析重载方法

问题描述 投票:0回答:1

我已将具有the following method的Play / Scala项目导入Intellij,由于我不了解的原因,该项目出现了编译错误。任何想法在这里出什么问题吗?

我正在使用Java 8和Scala 2.11.6。

  def fetchUser(id: Long): Option[UserRecord] =
    Cache.getAs[UserRecord](id.toString).map { user =>
      Some(user)
    } getOrElse {
      DB.withConnection { connection =>
        val sql = DSL.using(connection, SQLDialect.POSTGRES_9_4)
        val user = Option(sql.selectFrom[UserRecord](USER).where(USER.ID.equal(id)).fetchOne())
        user.foreach { u =>
          Cache.set(u.getId.toString, u)
        }
        user
      }
    }

withConnection方法的调用出现编译错误。错误是:Cannot resolve overloaded method 'withConnection'

[当我尝试跳转到withConnection方法的实现时,编译器在play.api.db.DB (2.4.3)类中建议了两种可能的方法:

  /**
   * Execute a block of code, providing a JDBC connection. The connection is
   * automatically released.
   *
   * @param name The datasource name.
   * @param autocommit when `true`, sets this connection to auto-commit
   * @param block Code block to execute.
   */
  def withConnection[A](name: String = "default", autocommit: Boolean = true)(block: Connection => A)(implicit app: Application): A =
    db.database(name).withConnection(autocommit)(block)

  /**
   * Execute a block of code, providing a JDBC connection. The connection and all created statements are
   * automatically released.
   *
   * @param block Code block to execute.
   */
  def withConnection[A](block: Connection => A)(implicit app: Application): A =
    db.database("default").withConnection(block)
scala intellij-idea java-8 playframework compiler-errors
1个回答
0
投票

编译器应找到

def withConnection[A](block: Connection => A)(implicit app: Application): A =
    db.database("default").withConnection(block)

因为匹配电话

DB.withConnection { ... }

与]相同>

DB.withConnection( block = { ... })

只要可以找到隐式Application。我不知道此隐式Application的位置,但是由于它是从示例项目到书本的,所以我认为它存在于某处并且在过去有效。

您已经发布了三个与该项目的构建错误有关的问题。每次遇到此项目的构建错误时,请不要发布新的问题。那不是SO的重点。这些问题最适合于项目本身的维护者,即。作者在GitHub存储库的问题页面上。

现在看起来好像没有维护该项目。这是一个旧项目。您很可能会遇到由于版本过旧而导致问题中断的问题。考虑改问一个有关构建旧游戏项目的问题。

© www.soinside.com 2019 - 2024. All rights reserved.