今天整合Spring、struts2和Spring Data JPA的时候遇到以下问题,现记录以供参考。
<!-- 定义实体管理工厂bean -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="demo" />
<property name="persistenceXmlLocation" value="classpath:persistence.xml" />
</bean>
按以上代码配置实体管理工厂时将会抛出异常,大意就是找不到persistence.xml文件。
因为我的persistence.xml文件是放在与src同级的resource文件夹内的,而默认会去src下META-INF文件夹加载该配置文件。
现解决办法有两种:
1、将persistence.xml文件移至src/META-INF/下,若不存在该文件夹则手动创建;
2、将
org.springframework.orm.jpa.LocalEntityManagerFactoryBean
改为
org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean
如果要了解实现原理,请自行查看源码。