今天整合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
如果要了解實現原理,請自行查看源碼。