在搭建项目的过程中我使用了maven,并且部署了多个模块,model和service,dao层分离,service,dao依赖model层,但是这时使用persist.xml构造的provider无法获取到另一个jar包下的类,只能获取到当前classes目录下的类,使用spring的封装的LocalContainerEntityManagerFactoryBean,配置了packagescan无法扫描,无法初始化provider,只有配置不同的unit才可以,但是无法扫描不同jar中的类,后来看了spring的初始化类的过程,发现是包装类的一些问题,只能通过配置jpaVendorAdapter才可
配置如下:
<property name="packagesToScan" value="org.ww"></property>
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
<property name="generateDdl" value="false" />
</bean>
</property>当然还要配置数据库连接的信息
配置在jpaPropertyMap中,这是persist.xml的作用已经不大了
本文介绍了在使用Spring JPA时遇到的问题,即当项目采用Maven多模块部署,model和service、dao层分离时,LocalContainerEntityManagerFactoryBean无法扫描到不同jar包下的类。通过分析Spring初始化过程,发现需要配置jpaVendorAdapter来解决这个问题。具体配置是在jpaPropertyMap中进行,这使得传统的persist.xml配置变得不再必要。
3875





