子项目中的 Ebean 模型类未增强
Posted
技术标签:
【中文标题】子项目中的 Ebean 模型类未增强【英文标题】:Ebean Model class in subproject not enhanced 【发布时间】:2015-12-17 22:17:50 【问题描述】:我正在尝试将一个简单的应用程序连接到两个数据库,该应用程序有一个子项目。 默认数据库的模型在主项目中,而第二个数据库的模型在子项目中,就像这样;
root/app/models/MainModel
root/sub/app/mods/SubModel
现在我像这样配置 application.conf;
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
#db.default.user=sa
#db.default.password=""
db.sub.driver=org.postgresql.Driver
db.sub.url="jdbc:postgresql://localhost:5432/test"
db.sub.username= postgres
db.sub.password="password@1"
ebean.default = ["models.*"]
ebean.sub = ["mods.*"]
(是的,我使用 postgre 作为第二个数据库) 和 build.sbt 一样
lazy val sub = project.in(file("sub")).enablePlugins(PlayEbean, PlayEnhancer)
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean)
.aggregate(sub)
.dependsOn(sub)
playEbeanModels in Compile := Seq("models.*", "mods.*")
root/app/models/MainModel:
package models;
import java.io.Serializable;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.OneToMany;
@Entity
public class MainModel implements Serializable
private static final long serialVersionUID = 1L;
@Id
public Integer id;
public String name;
和 root/sub/app/mods/SubModel:
package mods;
import javax.persistence.Entity;
import javax.persistence.Id;
import com.avaje.ebean.Model;
@Entity
public class SubModel extends Model
@Id
public Long id;
public String name;
但是当我运行应用程序时,我得到了这个异常;
CreationException: Unable to create injector, see the following errors: 1)
Error injecting constructor, java.lang.IllegalStateException:
Bean class mods.SubModel is not enhanced?
显然根项目中的模型得到了增强,但子项目中的模型没有。我错过了什么?我如何让它工作?
【问题讨论】:
顺便说一句,我使用 play 2.4.3 你能发布 SubModel 类吗?它是如何创建的?或者创建一个示例应用程序来重现错误(您可以将其放在 github 上)?否则我必须(手动)构建一个完整的示例应用程序.. 我已更新问题以反映模型。 【参考方案1】:我遇到了这个问题。我的一半模型在我的子模块中。我将他们的 ebean 配置放在子模块的 application.conf 中。
您应该将下面的行放在 sub/conf/application.conf 中:
ebean.sub = ["mods.*"]
然后在您的 sub/build.sbt 中添加以下行:
playEbeanModels in Compile := Seq("mods.*")
【讨论】:
以上是关于子项目中的 Ebean 模型类未增强的主要内容,如果未能解决你的问题,请参考以下文章