子项目 Play 2.4 中的 Ebean 增强

Ebean enhancement in subproject Play 2.4

我有一个连接到两个数据库的应用程序,默认数据库模型在根项目中,第二个数据库模型在子项目中。 我的项目,一个简短的文件夹结构看起来像这样

[root]/build.sbt
[root]/conf/application.conf
[root]/app/models/Author.java (and other models)
[root]/module/build.sbt 
[root]/module/app/mods/User.java

并且 application.conf 已经像这样配置了 ebean

db.default.driver=org.postgresql.Driver
db.default.url="jdbc:postgresql://localhost:5432/main"
db.default.username=postgres
db.default.password="password"

db.second.driver=org.postgresql.Driver
db.second.url="jdbc:postgresql://localhost:5432/second"
db.second.username=postgres
db.second.password="password"

ebean.default = ["models."]
ebean.second = ["mods."]

和 build.sbt 这样的:

lazy val module = project.in(file("module")).enablePlugins(PlayJava, PlayEbean, PlayEnhancer)
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
.aggregate(module)
.dependsOn(module)

但是当我 运行 应用程序时我得到这个异常

Error injecting constructor, java.lang.IllegalStateException: Bean class mods.User is not enhanced?

显然子项目中的模型没有得到增强。我如何让它工作?

尝试在您的子项目的 build.sbt 中添加以下内容:

playEbeanModels in Compile := Seq("mods.*")

这会告诉 Play Framework 在查找模型时也会查看您的子项目 类。您可以在 Play Framework Documentation.

中的 "Configuring the sbt plugin" 段中找到更长的解释

这个解决方案对我有用(在重新加载和编译项目之后)。