Play Framework中子项目类中的包名称(名称空间)

我正在尝试在PlayFramework中创建多子模块项目(播放框架2.2.1)。

我应该如何在子模块中命名包?

FE我的结构如下:

  • 应用
  • CONF
  • DOC
  • 日志
  • 模块:
    • 共同:
      • 应用:
        • 控制器
        • 楷模
        • 意见
      • CONF:
        • common.routes
      • build.sbt
  • 项目
  • 上市
  • 目标
  • 测试

如何在文件中命名的包(命名空间):

/modules/common/app/controllers/Aplication.java

应该是这样的:

package controllers; package controllers.common; package common.app.controllers; 

实际上我喜欢这样:

 package controllers.common; public class Index extends Controller {} 

与子模块中的模型类相同的问题。 Fe中的文件:/modules/common/app/models/User.java

应该是这样的:

 package models; package models.common; package common.app.models; 

实际上我喜欢这样:

 package models.common; public class User {} 

我得到的运行时错误:

 [IllegalArgumentException: Unknown entity: models.Cart] 

我找到了解决方案。

无论我如何命名包都没关系。 play框架的一个要求是使用以下命令启动包的名称:

  • 控制器 – 在命名控制器包的情况下(fe: package controllers.common;
  • 模型 – 在命名模型包的情况下(fe: package models.common;或者只是package models;

运行时错误:

 [IllegalArgumentException: Unknown entity: models.Cart] 

是由Jpa / Hibernate配置引起的。 问题是Jpa / Hibernate在编译时会看到我的实体(由注释@Entity标记),但在运行时不会。 为了解决这个问题,我将手动指向persistance.xml文件中的所有模型类(权利),如下所示:

/conf/META-INF/persistence.xml

   org.hibernate.ejb.HibernatePersistence DefaultDS models.AppMode models.Customer models.Complaint        

在这里查看更多: 如何使用jpa / hibernate在playframework子模块中持久化模型实体