子项目中的Ebean增强播放2.4

时间:2015-12-08 03:45:55

标签: ebean playframework-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?

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

1 个答案:

答案 0 :(得分:3)

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

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

这告诉Play Framework在查找模型类时也会查看子项目。您可以在Play Framework Documentation中的“配置sbt插件”段落中找到更长的解释。

此解决方案适用于我(在重新加载和编译项目之后)。