2013-06-13 54 views
0

我在從多個路徑加載hibernate映射時遇到問題。春季會議工廠沒有找到具有相同類路徑的多個目錄中的映射文件

我的春季會議廠是定義如下:

<beans> 
    ... 
    <bean id="sessionFactory" class="org.springframwork.orm.hibernate3.LocalSessionFactory"> 
    </bean> 

    <property name="mappingLocations"> 
    <list> 
     <value>classpath:/mapping/*.hbm.xml</value> 
    </list> 
    </property> 

當我把我的映射Foo.hbm.xmlBar.hbm.xml進入目錄src/main/resources/mappings,那麼當Hibernate被初始化都映射發現。

但是,當我將Foo.hbm.xml放入目錄src/main/resources/mappingBar.hbm.xml到目錄src/test/resources/mapping時,則只能找到後一個映射文件。 Hibernate將因「無法找到Foo映射」錯誤而失敗。

我可以看到映射被複制到目錄target/classes/mappingtarget/test-classes/mapping,爲什麼hibernate(或者spring本地會話工廠bean)找不到兩個映射文件?我認爲「classpath:/ mapping/*。hbm.xml」會找到target/classes/mappingtarget/test-classes/mapping目錄嗎?

編輯:我在運行單元測試時遇到了這個問題,所以我期望找到在src/main/resourcessrc/test/resources中找到的映射。

回答

0

您正在使用maven。並且,由於您將Bar映射放入測試資源目錄,因此它僅在運行測試時可用。

我假設你有一個持久單元配置爲與下面的例子

<persistence-unit ...> 
    <class>something.Foo</class> 
    <class>something.Bar</class> 
</persistence-unit> 

在啓動時會發生什麼情況是,春天開始休眠,休眠讀取持久化單元,並要求工廠的映射。但請記住,Bar只是一個測試課程。所以Spring找到src/main/resources的映射,但由於它不能作爲測試運行,所以它看不到src/test/resources

+0

感謝您的回覆。我應該說我在運行測試時遇到了這個問題,因此除了在主資源目錄中定義的映射外,我還希望能夠找到在測試資源目錄中定義的映射。當我使用'src/main/resources'中的所有映射運行測試時,找到所有映射。當我使用從src/main/resources到src/test/resources的一個映射運行測試時,只能找到在src/test/resources中找到的映射。 –

相關問題