最近在练习集成Struts2,Spring,Jpa(以Hibernate实现),出现无法获取EntityManager的问题:问题出现NullPointerException异常
我的beans.xml的一部分配置如下:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="uushop"/>
</bean>
<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>
而在应用中则通过如下获取:
//获取EntityManager
@PersistenceContext protected EntityManager em;
苦苦地找寻原因,原来是少了在web.xml文件中进行配置了
<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>entityManagerFactory</param-value> //对应beans.xml文件中的名称
</init-param>
</filter>
<filter-mapping>
<filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>