子项目 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