如何配置休眠以扫描不同模块中的实体
我有模块A和模块B,它们都有JPA注释的类。模块 B 有一个单元测试,从 A 中提取几个这样的实体。两个模块编译正常,运行时依赖项设置为OK,但是当我尝试运行单元测试时,我收到以下错误:
java.lang.IllegalArgumentException: Unknown entity: MyClassHere
Caused by: org.hibernate.MappingException: Unknown entity: MyClassHere
这发生在 EntityManager.merge 调用中。
由于模块B具有所有休眠配置文件等,我猜它根本没有发现我从A的类是一个实体。
我尝试将以下内容添加到持久性中.xml
<exclude-unlisted-classes>false</exclude-unlisted-classes>
在休眠状态下.cfg.xml我添加了:
<property name="packagesToScan">myNamespace.*</property>
然后:
<property name="packagesToScan">
<array>
<value>myNamespace.*</value>
</array>
</property>
这给了我一个错误,即“属性”的内容必须与null匹配。然后我尝试了:
<mapping class="myNamespace.*" />
我错过了什么?
编辑:我忘记提到的一件事可能很重要,那就是这两个模块被设置为单独的项目(我使用的是eclipse),所以目录结构是不同的。运行时依赖项都已正确设置,但由于.class文件最终位于不同的目录中,因此我认为hibernate可能不会扫描它们。