scala - Scala:编译错误:无法解析重载方法
问题描述
我已使用以下方法将 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)
解决方案
编译器应该找到
def withConnection[A](block: Connection => A)(implicit app: Application): A =
db.database("default").withConnection(block)
因为这与电话相匹配
DB.withConnection { ... }
这与
DB.withConnection( block = { ... })
只要能找到隐含的Application
。我不知道这个隐式Application
存在于哪里,但由于这是从一个示例项目到一本书,我认为它存在于某个地方并且过去曾工作过。
您已经发布了三个与构建有关此项目的错误有关的问题。请不要在每次遇到此项目的构建错误时发布新问题。那不是SO的重点。这些问题最好针对项目本身的维护者,即。作者在 GitHub 存储库的问题页面上。
现在看起来这个项目没有得到维护。这是一个老项目。由于版本过时,您很可能会遇到问题。考虑问一个关于构建旧游戏项目的问题。
推荐阅读
- android - 在 ListView 中显示图像时内存不足
- c# - 我的每个模块都应该引用我的 MVVM 框架吗?
- javascript - SEO:如何从客户端 api 请求中索引数据
- sql - SQL Server:如何创建列名为 schemaname.columnname 的表
- php - 打字错误3前端登录立即断开用户
- php - 了解 PHP 中的可调用类型 - 这是什么意思?
- r - 呼叫中心数据的时间序列预测
- tensorflow - 有没有办法在 Web Worker 中使用 tfjs,如果有,你可以提供一个示例/示例
- javascript - 打开第 5 层包含 XY 不起作用。检查坐标是否在多边形中
- ios - 斯威夫特 | 强制取消执行代码