2010-06-21 5 views
1

Ma webapp contient plusieurs entityManagerFactories (DB), chacun a son nom unique, tel que entityManagerFactoryApp, entityManagerFactoryBusiness, entityManagerFactoryForum ... etc.Lorsque entityManagerFactory n'est pas nommé "entityManagerFactory"

Dans une application Web, je dois ajouter OpenEntityManagerInViewFilter pour obtenir le modèle "Ouvrir une session dans la vue".

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

Mais lors de l'exécution, Spring se plaint NoSuchBeanDefinitionException: No bean named 'entityManagerFactory' is defined

Mais mes champs électromagnétiques ne sont pas nommé « EntityManagerFactory », je recherche le code de OpenEntityManagerInViewFilter et trouver setEntityManagerFactoryBeanName() méthode, mais comment dois-je définir sa valeur dans web.xml? En outre, j'ai plusieurs EMF, shoild je définis plusieurs OpenEntityManagerInViewFilter s dans web.xml?

Merci à l'avance.

environnements: Printemps 3.0.2, Hibernate 3.5.1.Final, Résine 4.0.7, JPA2 (hiberner-jpa-2,0-api)

Répondre

5
OpenEntityManagerInViewFilter

est une sous-classe de GenericFilterBean, ce qui se traduit automatiquement les paramètres d'initialisation du filtre dans les propriétés du haricot. Donc, pour régler la entityManagerFactoryBeanName propriété sur le filtre, il suffit d'utiliser un 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> 

Vous aurez besoin d'un de ces par EntitymanagerFactory, avec le entityManagerFactoryBeanName fixé en conséquence.

+0

Merci, ça marche! – smallufo

Questions connexes