Когда entityManagerFactory не называется "entityManagerFactory" - PullRequest
1 голос
/ 22 июня 2010

Мое веб-приложение содержит много entityManagerFactories (DB), каждое из которых имеет свое уникальное имя, например, entityManagerFactoryApp, entityManagerFactoryBusiness, entityManagerFactoryForum ... и т. Д.

В веб-приложении мне нужно добавить OpenEntityManagerInViewFilter, чтобы выполнить «Open Session»в представлении "pattern.

<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: No bean named 'entityManagerFactory' is defined

Но мои ЭДС не называются" entityManagerFactory ", я ищу код OpenEntityManagerInViewFilter и нахожу метод setEntityManagerFactoryBeanName(),но как мне установить его значение в web.xml?Кроме того, у меня есть несколько EMF, но я определяю несколько OpenEntityManagerInViewFilter s в web.xml?

Спасибо заранее.

Среды: Spring 3.0.2, Hibernate 3.5.1.Final,Смола 4.0.7, JPA2 (hibernate-jpa-2.0-api)

1 Ответ

5 голосов
/ 22 июня 2010

OpenEntityManagerInViewFilter - это подкласс GenericFilterBean, который автоматически переводит параметры инициализации фильтра в свойства бина.Таким образом, чтобы установить свойство 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.

...