使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果
Posted
技术标签:
【中文标题】使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果【英文标题】:can't find method result on TableQuery with slick 3.0.0-RC1 【发布时间】:2015-04-23 18:17:53 【问题描述】:我正在试用 Slick 3.0.0-RC1
,但遇到了一个奇怪的问题。
这是我的代码:
import slick.driver.SQLiteDriver.api._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration.Duration
lazy val db = Database.forURL(
url = "jdbc:sqlite:thebase.db",
driver = "org.sqlite.JDBC"
)
case class Issue(id: Option[Int], name: String)
class IssueTable(tag: Tag) extends Table[Issue](tag, "issue")
def id = column[Int]("issue_id", O.PrimaryKey)
def name = column[String]("name")
def * = (id.?, name) <> (Issue.tupled, Issue.unapply _)
val issueQuery = TableQuery[IssueTable]
Await.result(db.run(issueQuery.result), Duration.Inf) // This does not compile
错误是:
“无法解析符号结果”
阅读docs 我真的不明白为什么这会失败。我在这里错过了什么吗?
分辨率
szeiger 指出这可能是“IntelliJ 的演示文稿编译器”中的一个错误,而且这很明显。
【问题讨论】:
这里的“编译”是什么意思? IntelliJ 的演示编译器中存在一个已知错误,导致它无法找到该方法。实际的 Scala 编译器应该能够编译它。 你是对的。我从来没有费心用 sbt 编译,因为 IDEA 给了我一个错误。谢谢! 太糟糕了 IntelliJ 没有得到它。将它用于必须使用 IDE 的大型项目时会破坏一切。这是重点 - 获得编译时间检查和自动完成 对于遇到相同未解决症状“结果”的人的注意事项:您可能(就像我一样)忘记导入 api 对我来说导入 slick.driver.mysqlDriver.api._ 解决了这个问题。 【参考方案1】:我确实遇到了同样的问题,这是我为摆脱它所做的:
-
将 IntelliJ 更新到版本 14.1.3
使用 Scala 插件 1.5 版
我的 scala 版本是 2.11.6
我希望这对可能遇到同样问题的人有所帮助!
【讨论】:
升级到最新的 JetBrain Scala 插件版本 1.5.2 为我解决了这个问题【参考方案2】:如果有人遇到类似问题:
TableQuery 上没有结果方法
仔细检查你是否有import slick.jdbc.PostgresProfile.api._
【讨论】:
【参考方案3】:这是我在使用 IntelliJ IDEA 时经常遇到的常见问题。
如果使用 activator,命令 - “activator idea” 帮助我解决了问题。
它重新创建了 .idea 和 IdeaProject.iml 文件,然后重新加载了项目。 我目前使用的是 activator-1.3.4
【讨论】:
【参考方案4】:你可以试试
val result = db.withSession(implicit session => issueQuery.list)
【讨论】:
以上是关于使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果的主要内容,如果未能解决你的问题,请参考以下文章
编译 private.hpp OpenCV 3.0.0-rc1 时出错