我正在将我的应用程序从 play 2.3 迁移到 2.4。
在 GlobalSettings 的 2.3 应用程序中,我必须使用 slick 访问数据库来创建 postgres 数据库函数。
由于 GlobalSettings 在 2.4 中已弃用,因此替代方法是使用 Eager Bindings:
https://www.playframework.com/documentation/2.4.x/ScalaDependencyInjection#Eager-bindings
像这样:
class MyModule extends AbstractModule {
def configure() = {
db.withSession { implicit ss =>
StaticQuery.update("""CREATE OR REPLACE FUNCTION ... """).execute
}
}
}
但这给了我错误:
java.lang.ExceptionInInitializerError:
core.includes$.<init>(includes.scala:14)
core.includes$.<clinit>(includes.scala)
Application$$anonfun$configure$1.apply(Application.scala:17)
Application$$anonfun$configure$1.apply(Application.scala:15)
scala.slick.backend.DatabaseComponent$DatabaseDef$class.withSession(DatabaseComponent.scala:34)
scala.slick.jdbc.JdbcBackend$DatabaseFactoryDef$$anon$4.withSession(JdbcBackend.scala:61)
modules.jdbc.Database$$anonfun$withSession$1.apply(Database.scala:14)
modules.jdbc.Database$$anonfun$withSession$1.apply(Database.scala:14)
Application.configure(Application.scala:15)
com.google.inject.AbstractModule.configure(AbstractModule.java:62)
com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
com.google.inject.spi.Elements.getElements(Elements.java:110)
com.google.inject.util.Modules$OverrideModule.configure(Modules.java:177)
com.google.inject.AbstractModule.configure(AbstractModule.java:62)
com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:340)
com.google.inject.spi.Elements.getElements(Elements.java:110)
com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:138)
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:104)
com.google.inject.Guice.createInjector(Guice.java:96)
com.google.inject.Guice.createInjector(Guice.java:73)
com.google.inject.Guice.createInjector(Guice.java:62)
play.api.inject.guice.GuiceBuilder.injector(GuiceInjectorBuilder.scala:126)
play.api.inject.guice.GuiceApplicationBuilder.build(GuiceApplicationBuilder.scala:93)
play.api.inject.guice.GuiceApplicationLoader.load(GuiceApplicationLoader.scala:21)
有谁知道我该如何解决这个问题?谢谢。