在playframework的子模块中添加jpa / hibernate @Entity到实体管理器进行扫描

我在使用playframework中的子模块时遇到了hibernate实体的问题。

通常(在没有子模块的单个应用程序中)我使用了该代码:

package models; @Entity public class AppMode { public static AppMode getCurrentConfigurationEntry() { return JPA.em().find(AppMode.class, 1L); } } 

但现在我必须告诉hibernate实体管理器扫描子模块模型,因为我收到一个错误:

 [IllegalArgumentException: Unknown entity: AppMode] 

我在子模块中的模型类是在包中:

 package models.common; 

我已经尝试过了:

  return JPA.em().find(models.common.AppMode.class, 1L); return JPA.em().find(common.models.AppMode.class, 1L); 

但是我得到了同样的错误:

 [IllegalArgumentException: Unknown entity: models.common.AppMode] 

我的问题是:如何在play子项目中配置hibernate,以便在运行时将子模块类添加到classpath?

我在build.sbt文件中都使用hibernate声明了libraryDependencies。

我应该为每个模块都有persistence.xml文件/配置吗?

我必须手动添加映射思想xml持久性文件,并使用注释映射:@Entity

我认为你的问题是关于JPA配置。 请查看此答案 , 该答案解释了JPA多模块配置。

祝你好运!

我认为Hibernate只扫描jar文件中的JPA实体,而不是例如类/文件夹中的JPA实体,或者只扫描jar中的persistence.xml,或类似的东西。 这是JavaSE上纯Hibernate的解决方案,没有Spring: https : //stackoverflow.com/a/41845759/377320

Interesting Posts