entityManagerFactory未命名为“entityManagerFactory”时的java
我的webapp包含许多EntityManagerFactory(DBs)。每个都有自己独特的名称,如entityManagerFactoryApp,entityManagerFactoryBusiness,entityManagerFactoryForum等
在webapp中,我必须添加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: No bean named 'entityManagerFactory' is defined
但是我的EntityManager工厂没有一个被命名为EntityManager工厂
我查看了OpenEntityManagerInViewFilter
的代码,找到了setEntityManagerFactoryBeanName()
方法。如何在web中设置它的值。xml
此外,由于我有多个emf,我应该在web中定义多个OpenEntityManagerInViewFilter
。xml
环境:Spring3.0.2,Hibernate3.5.1。最终,树脂4.0.7,JPA2(hibernate-jpa-2.0-api)
# 1 楼答案
OpenEntityManagerInViewFilter
是GenericFilterBean
的一个子类,它自动将filter init参数转换为bean属性。因此,要在过滤器上设置entityManagerFactoryBeanName
属性,只需使用init参数:每个
EntitymanagerFactory
需要一个这样的函数,并相应地设置entityManagerFactoryBeanName