1

我的项目最近从 Play 2.5 更新到 2.6.13。我添加了一个新脚本 16.sql 但更改未应用于表play_evolutions

根据文档 2.6EvolutionsComponents如果您使用编译时 DI,则必须注入。但是 Guice 是运行时 DI,所以我不应该注入任何组件。

我启用了进化build.sbt

libraryDependencies ++= Seq(evolutions, jdbc)

在 application.conf

play.evolutions.enabled=true
play.evolutions.autoApply=true

我的项目缺少什么?欢迎任何 git 示例

4

1 回答 1

0

自升级到 Play 2.6 以来,我按照文档解决了这个问题

这是我的代码

import play.api.ApplicationLoader.Context
import play.api.{Application, ApplicationLoader, BuiltInComponentsFromContext}
import play.api.db.{DBComponents, HikariCPComponents}
import play.api.db.evolutions.EvolutionsComponents
import play.api.routing.Router
import play.filters.HttpFiltersComponents
import router.Routes

class MyApplicationLoader extends ApplicationLoader {

  def load(context: ApplicationLoader.Context): Application = {
    new AppComponents(context).application
  }
}

class AppComponents(context: Context)
    extends BuiltInComponentsFromContext(context)
    with DBComponents
    with EvolutionsComponents
    with HikariCPComponents
    with HttpFiltersComponents {
  // this will actually run the database migrations on startup
  applicationEvolutions

  //  val prefix: String = "/"
  lazy val router = Router.empty
  //  lazy val router: Router = bind(classOf[Routes]).to(classOf[Routes])

}

在 conf/application.conf 中,添加这一行

play.application.loader=MyApplicationLoader
于 2018-10-24T16:57:45.373 回答