簡體   English   中英

當 entityManagerFactory 未命名為“entityManagerFactory”時

[英]When entityManagerFactory is not named "entityManagerFactory"

我的 web 應用程序包含許多 entityManagerFactories (DB)。 每個都有自己唯一的名稱,例如entityManagerFactoryAppentityManagerFactoryBusinessentityManagerFactoryForum等。

在 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>

運行 Spring 時拋出以下錯誤:

NoSuchBeanDefinitionException:未定義名為“entityManagerFactory”的 bean

但是我的 entityManagerFactories 都沒有命名為entityManagerFactory

我查看了OpenEntityManagerInViewFilter的代碼,發現了setEntityManagerFactoryBeanName()方法。 如何在 web.xml 中設置它的值?

此外,由於我有多個 EMF,我應該在 web.xml 中定義多個OpenEntityManagerInViewFilter嗎?

環境:Spring 3.0.2、Hibernate 3.5.1.Final、Resin 4.0.7、JPA2 (hibernate-jpa-2.0-api)

OpenEntityManagerInViewFilter是的一個子類GenericFilterBean ,其中自動轉換濾波器初始化參數到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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM