子项目 Play 2.4 中的 Ebean 增强

Posted

技术标签:

【中文标题】子项目 Play 2.4 中的 Ebean 增强【英文标题】:Ebean enhancement in subproject Play 2.4 【发布时间】:2015-12-08 03:45:55 【问题描述】:

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

[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】:

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

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

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

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

【讨论】:

以上是关于子项目 Play 2.4 中的 Ebean 增强的主要内容,如果未能解决你的问题,请参考以下文章

Play 2.4 - 在 Eager 单例模块中使用 Ebean

Play Ebean 从 2.4 升级到 2.5 后不生成 Id

playframework 2.4 基本ebean配置

子项目中的 Ebean 模型类未增强

玩2.4 Ebean分页问题

如何在 jar 中增强 ebean 模型