我有 2.6.5 版本的 Play 和多模块(几个 sbt 子模块)配置。我设置了 2 个不同的数据源并出现 Ebean 错误:
Caused by: javax.persistence.PersistenceException: models.common.defaultStorage.PromoBlock is NOT an Entity Bean registered with this server?
at io.ebeaninternal.server.core.DefaultServer.createQuery(DefaultServer.java:1019)
at io.ebeaninternal.server.core.DefaultServer.find(DefaultServer.java:975)
at io.ebean.Finder.query(Finder.java:157)
at models.common.defaultStorage.PromoBlock.findByProjectId(PromoBlock.java:84)
仅当我在application.conf
.
我的build.sbt
:
lazy val common = (project in file("modules/common")).enablePlugins(PlayJava, PlayEbean)
lazy val admin = (project in file("modules/admin")).enablePlugins(PlayJava, PlayEbean).dependsOn(common)
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean).aggregate(common, admin).dependsOn(common, admin)
我的 ebean 实体存在于common
模块中。application.conf
我在项目中只有一个root
和 2 个数据源:
db {
default.driver = org.postgresql.Driver
default.url = "postgres://..."
mssql.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
mssql.url = "jdbc:sqlserver://..."
}
ebean.default = ["models.common.defaultStorage.*"]
ebean.mssql = ["models.common.mssqlStorage.*"]
我发现,如果我注释掉第二个ebean.mssql
选项,一切都会好起来的。但是有两个不同的映射类列表我得到了例外。
我尝试使用文档https://www.playframework.com/documentation/2.6.5/JavaEbean中的所有指令,但仍然没有成功。
我的plugins.sbt
:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.6.5")
...
addSbtPlugin("com.typesafe.sbt" % "sbt-play-enhancer" % "1.1.0")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "4.0.3")
Ps 我正在从 2.4(和以前的 2.3)版本的 Play 迁移项目,一切正常。