2010-06-21 96 views
1

我的webapp包含許多entityManagerFactory(DB),每個都有其唯一的名稱,如entityManagerFactoryApp,entityManagerFactoryBusiness,entityManagerFactoryForum等。當entityManagerFactory沒有命名爲「entityManagerFactory」

在一個web應用程序中,我必須添加OpenEntityManagerInViewFilter來實現「在視圖中打開會話」模式。

<filter> 
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> 
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> 
    </filter> 
    <filter-mapping> 
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
    </filter-mapping> 

但是運行的時候,春天抱怨NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined

但我的電磁場未命名「的entityManagerFactory」,我查找OpenEntityManagerInViewFilter的代碼,並發現setEntityManagerFactoryBeanName()的方法,但我應該怎麼設置它在web.xml中的價值? 此外,我有多個EMFs,我在web.xml中定義了多個OpenEntityManagerInViewFilter

謝謝先進。

環境:彈簧3.0.2,休眠3.5.1.Final,樹脂4.0.7,JPA2(冬眠-JPA-2.0-API)

回答

5

OpenEntityManagerInViewFilterGenericFilterBean一個子類,其中自動轉換濾波器初始化參數到bean屬性中。因此,要設置過濾器上的entityManagerFactoryBeanName財產,只需要使用一個init-PARAM:

<filter> 
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name> 
    <filter-class>org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter</filter-class> 
    <init-param> 
     <param-name>entityManagerFactoryBeanName</param-name>  
     <param-value>entityManagerFactoryApp</param-value>  
    </init-param> 
</filter> 

你需要的這些每EntitymanagerFactory之一,設置相應的entityManagerFactoryBeanName

+0

謝謝,它的工作原理! – smallufo 2010-06-21 22:59:13

相關問題