在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