我有模塊A和模塊B,它們都具有JPA註釋類。模塊B有一個單元測試,在一對夫婦這些實體的拉動從A 兩個模塊編譯優良,運行時依賴都設置好了,但我得到以下錯誤,當我嘗試運行單元測試:如何配置休眠以掃描不同模塊中的實體
java.lang.IllegalArgumentException: Unknown entity: MyClassHere
Caused by: org.hibernate.MappingException: Unknown entity: MyClassHere
這發生在EntityManager.merge調用中。
由於模塊B具有所有的休眠配置文件等,我猜測它根本沒有提到我的A類是一個實體。
我嘗試添加下列到persistence.xml中
<exclude-unlisted-classes>false</exclude-unlisted-classes>
在hibernate.cfg.xml我說:
<property name="packagesToScan">myNamespace.*</property>
然後:
<property name="packagesToScan">
<array>
<value>myNamespace.*</value>
</array>
</property>
這給了我一個錯誤「財產」的內容必須爲空。 然後我試過:
<mapping class="myNamespace.*" />
我在想什麼?
編輯︰有一件事我忘了提到可能是重要的是,這兩個模塊設置爲單獨的項目(我使用eclipse),所以目錄結構是不同的。運行時依賴關係都設置正確,但由於.class文件最終在不同的目錄中,我認爲休眠可能不會掃描它們。
查看示例源代碼?我有一個類似的設置,它正在使用[setPackagesToScan](http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean.html# setPackagesToScan-java.lang.String ...-)覆蓋[LocalContainerEntityManagerFactoryBean]中提供(http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/orm/jpa/LocalContainerEntityManagerFactoryBean的.html)。 –
你可以用' myNamespace '(即沒有'。*')來嘗試:這個屬性應該指向要掃描的類的父包。例如。如果'MyEntity'類在'my.package包中。MyEntity',你會寫' my.package ' –
Tunaki
試過了,它沒有工作... – ventsyv