使用@PersistenceContext获取EntityManager报NullPointerException异常

本文介绍了一种在集成Struts2、Spring和JPA时遇到的EntityManager获取问题及其解决方案。通过正确配置Spring的LocalEntityManagerFactoryBean,并在web.xml中添加OpenEntityManagerInViewFilter过滤器,可以有效解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在练习集成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>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值