如何通过 java 为 Play!2.1.1 配置 ebean 服务器

Posted

技术标签:

【中文标题】如何通过 java 为 Play!2.1.1 配置 ebean 服务器【英文标题】:How to configure ebean server via java for Play!2.1.1 【发布时间】:2013-06-06 22:17:52 【问题描述】:

您好,我在使用 ebean 和 play 配置时遇到了一些问题,好像我无法让 ebean 服务器识别我项目中的某些类,我得到了

[PersistenceException: 类型 [class model.mappe.NodoSemplice] 不是注册实体?如果您没有明确列出要使用的实体类,Ebean 将在类路径中搜索它们。如果实体在 Jar 中,请检查 ebean.properties 文件中的 ebean.search.jars 属性或检查 ServerConfig.addJar()。]

model.mappe.NodoSemplice 类在哪里

@实体

公共类 NodoSemplice 扩展 NodoApprendimento

@实体

@Table(name="nodi_app")

公共抽象类 NodoApprendimento 扩展模型

导入是正确的,并且 ebeanserver 配置是这样的

    ServerConfig def = new ServerConfig();
    def.setName("fluidefault");
    def.setDataSource(play.db.DB.getDataSource("fluiddefault"));

    //i package delle classi di sistema
    def.addPackage("model.contributi.*");
    def.addPackage("model.corpi.*");
    def.addPackage("model.mappe.*");
    def.addPackage("model.utenti.*");

    def.setDdlGenerate(true);    //per generare il DataDefinitionLanguage

    fluidefault = EbeanServerFactory.create(def);

保存是通过

完成的
 public void save(NodoApprendimento nodoApprendimento)
    nodoApprendimento.save(fluidefault.getName());

服务器引导程序很好,也可以与它交谈,但我仍然得到持久性异常,因为服务器无法将类识别为实体

【问题讨论】:

【参考方案1】:

检查以下3点:

    尝试使用您的具体类 NodoSemplice,而不是您的抽象类 NodoApprendimento 来注释表 (@table)。

    将表与具体类绑定更有意义。

    确保您连接的数据库中存在名为nodi_app 的表,并且架构为public

    在您的application.conf 中,启用 Ebean:

    ebean.default="models.*"
    

【讨论】:

以上是关于如何通过 java 为 Play!2.1.1 配置 ebean 服务器的主要内容,如果未能解决你的问题,请参考以下文章

此版本的应用程序未配置为通过 Google Play 计费

如何搭建scala的play框架

play2.0 + java + mysql5.0 错误太多

为 play framework 2.6 配置的默认控制器包在哪里?

如何将自定义 Executor 注入到 play 应用程序中?

Java Play 框架 - NoClassDefFoundError:播放/配置