Play Framework 2.4.x - 带数据库的子项目
Play Framework 2.4.x - Subprojects with database
大家好,
我希望你能真正帮助我处理 Play Framework 2 中的子项目。4.x。我正在开发一个带有子项目的 Play 项目(我称之为根)。两者都有 ebean 模型,我想将这些模型保存在不同的数据库中。我尝试了很多可能性,但我无法解决。
- 在 [root]/conf/application.conf 和 [root]/modules/sub/conf/application.conf 中定义一个数据库和 Ebean 配置(使用不同的数据库名称)。然后我得到一个错误 "CreationException: Unable to create injector, see the following errors: 1) Error injecting constructor, java.lang.IllegalStateException: Bean class models.RootModel is not enhanced?"
- 在 root 配置中定义一个数据库和 Ebean 配置,在子项目配置中定义一个具有相同数据库名称的数据库和 Ebean 配置。然后我得到一个错误 "PersistenceException: subproject.models.SubModel is NOT an Entity Bean registered with this server?"
- 在根项目中同时定义数据库和 Ebean 配置,并在其配置中为子项目定义数据库,与 1 中的相同错误。
- 我的子项目没有配置,错误:"CreationException: Unable to create injector, see the following errors: 1) Error injecting constructor, java.lang.IllegalStateException: Bean class subproject.models.SubModel is not enhanced?"
如何为我的 Play Framework 项目及其子项目设置数据库?
我的文件在这些文件夹中:
[root]/build.sbt
[root]/conf/application.conf
[root]/app/models/RootModel.java
[root]/modules/sub/conf/application.conf
[root]/modules/sub/conf/app/models/subproject/models/SubModel.java
我的[root]/build.sbt:
import com.typesafe.play.sbt.enhancer.PlayEnhancer
name := """rootproject"""
version := "1.0"
lazy val root = (project in file("."))
.enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
.aggregate(sub)
.dependsOn(sub)
.settings(
TwirlKeys.templateImports += "subproject.models._"
)
lazy val sub = project.in(file("modules/sub"))
.enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
scalaVersion := "2.11.6"
在 application.conf 中定义数据库和 ebean 配置:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:./db/default;DB_CLOSE_DELAY=-1"
db.default.username="sa"
db.default.password="..."
db.sub.driver=org.h2.Driver
db.sub.url="jdbc:h2:./db/sub;DB_CLOSE_DELAY=-1"
db.sub.username="sa"
db.sub.password="..."
ebean.default=["models.*"]
ebean.sub=["subproject.models.*"]
好吧,我自己想通了。很简单,看Play Framework Documentation.
如果您遇到类似 'PersistenceException: sub.model.SubModel is NOT an Entity Bean registered with this server?' 的问题,请查看 Multiple Databases with Play Framework 2.1.x。
大家好,
我希望你能真正帮助我处理 Play Framework 2 中的子项目。4.x。我正在开发一个带有子项目的 Play 项目(我称之为根)。两者都有 ebean 模型,我想将这些模型保存在不同的数据库中。我尝试了很多可能性,但我无法解决。
- 在 [root]/conf/application.conf 和 [root]/modules/sub/conf/application.conf 中定义一个数据库和 Ebean 配置(使用不同的数据库名称)。然后我得到一个错误 "CreationException: Unable to create injector, see the following errors: 1) Error injecting constructor, java.lang.IllegalStateException: Bean class models.RootModel is not enhanced?"
- 在 root 配置中定义一个数据库和 Ebean 配置,在子项目配置中定义一个具有相同数据库名称的数据库和 Ebean 配置。然后我得到一个错误 "PersistenceException: subproject.models.SubModel is NOT an Entity Bean registered with this server?"
- 在根项目中同时定义数据库和 Ebean 配置,并在其配置中为子项目定义数据库,与 1 中的相同错误。
- 我的子项目没有配置,错误:"CreationException: Unable to create injector, see the following errors: 1) Error injecting constructor, java.lang.IllegalStateException: Bean class subproject.models.SubModel is not enhanced?"
如何为我的 Play Framework 项目及其子项目设置数据库?
我的文件在这些文件夹中:
[root]/build.sbt
[root]/conf/application.conf
[root]/app/models/RootModel.java
[root]/modules/sub/conf/application.conf
[root]/modules/sub/conf/app/models/subproject/models/SubModel.java
我的[root]/build.sbt:
import com.typesafe.play.sbt.enhancer.PlayEnhancer
name := """rootproject"""
version := "1.0"
lazy val root = (project in file("."))
.enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
.aggregate(sub)
.dependsOn(sub)
.settings(
TwirlKeys.templateImports += "subproject.models._"
)
lazy val sub = project.in(file("modules/sub"))
.enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
scalaVersion := "2.11.6"
在 application.conf 中定义数据库和 ebean 配置:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:./db/default;DB_CLOSE_DELAY=-1"
db.default.username="sa"
db.default.password="..."
db.sub.driver=org.h2.Driver
db.sub.url="jdbc:h2:./db/sub;DB_CLOSE_DELAY=-1"
db.sub.username="sa"
db.sub.password="..."
ebean.default=["models.*"]
ebean.sub=["subproject.models.*"]
好吧,我自己想通了。很简单,看Play Framework Documentation.
如果您遇到类似 'PersistenceException: sub.model.SubModel is NOT an Entity Bean registered with this server?' 的问题,请查看 Multiple Databases with Play Framework 2.1.x。