【发布时间】:2018-10-22 19:46:09
【问题描述】:
我正在尝试将我的应用程序从使用 Play 2.3.x 升级到 Play 2.4.x(将在 2.6 结束,但一步一步)和 Slick 从 2.1.0 升级到 3.1.1。
我已尽力关注Play's migration guide、Play Slick migration guide 和Slick upgrade guides。
我现在遇到的问题之一是以下行:
val db: slick.Database = play.api.db.slick.DB
这似乎不再是执行此操作的正确方法 b/c 我收到如下错误:
value withTransaction is not a member of play.api.db.slick.Database
从 Play slick 迁移指南看来,我应该将其修改为类似
val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
但是如果我没有正确的导入或什么,我会收到如下错误:
object driver is not a member of package play.api.db.slick
not found: value DatabaseConfigProvider
有关更多上下文,这是我正在使用的文件之一,它会出现此错误:https://github.com/ProjectSidewalk/SidewalkWebpage/blob/2c48dfa2e34c691e40568bfa9d50493aa3fe9971/app/models/attribute/GlobalAttributeTable.scala
有人知道我在这些迁移指南中遗漏了什么吗?
提前谢谢你!
【问题讨论】:
-
您正在从 slick 2.1.0 迁移到 3.1.1。他们完全改变了事务管理。你可以在这里阅读它slick.lightbend.com/doc/3.1.1/…。我认为您应该先查看迁移指南到 3.0.0 版本 - slick.lightbend.com/doc/3.0.0/upgrade.html
-
谢谢!是的,我也尝试遵循 2.1.0 到 3.0.0 指南。但是您链接到的关于 DB I/O 操作的部分完全超出了我的想象。我正在查看
def getAllX: List[X] = db.withSession { implicit session => tableOfX.list }之类的代码,而从升级指南中我看不到应该如何迁移这样的代码。一旦你点击 3.0.0 文档,withSession就再也不会被提及了。我能找到的最好的是here,但这也不能完全解释。 -
好的,这是另一篇我觉得很有帮助的博客文章,它提供了有关此特定语法迁移的更多信息:anadea.info/blog/comparative-analysis-of-slick-2-and-slick-3 将在我尝试后报告。
标签: scala slick playframework-2.4 slick-3.0