如何将JpaTemplate的使用从Spring3.2迁移到4.1.4?

如何将JpaTemplate的使用从Spring3.2迁移到4.1.4?,spring,jpa,spring-4,Spring,Jpa,Spring 4,我们目前已经配置并运行了Spring3.2.9.RELEASE(几年),需要迁移到4.1.4.RELEASE。我们有一个抽象的DAO类,它扩展了org.springframework.orm.jpa.support.JpaDaoSupport以及对以下内容的其他引用: org.springframework.orm.jpa.JpaCallback org.springframework.orm.jpa.JpaTemplate 我已经看到JpaDaoSupport在Spring4中被删除。我删

我们目前已经配置并运行了Spring3.2.9.RELEASE(几年),需要迁移到4.1.4.RELEASE。我们有一个抽象的DAO类,它扩展了
org.springframework.orm.jpa.support.JpaDaoSupport
以及对以下内容的其他引用:

  • org.springframework.orm.jpa.JpaCallback
  • org.springframework.orm.jpa.JpaTemplate
我已经看到
JpaDaoSupport
在Spring4中被删除。我删除了对Jpa*类的引用,并替换为

@PersistenceContext 
protected EntityManager theEntityManager;
对于DAO中的方法引用(如
findByNamedParams()
),请在
JpaDaoSupport
中找到,并复制到DAO中

在上面的更改之后,我们可以编译代码,但是在运行JUnit测试时,我们的
applicationContext test.xml
中有一个参考

<bean id="jpaTemplate" class="org.springframework.orm.jpa.JpaTemplate">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<bean id="abstractDAO" abstract="true" class="my.company.package.AbstractDAO">
    <property name="jpaTemplate" ref="jpaTemplate" />
</bean>

<bean id="genericDAO" parent="abstractDAO" class="my.company.package.GenericDAO" />
<bean id="securityDAO" parent="abstractDAO" class="my.company.package.SecurityDAOImpl" />

基本上,错误在于没有org.springframework.orm.jpa.JpaTemplate的类引用。我们如何替换Spring4.1.4的
JpaTemplate
配置

请注意,我正在提取此代码,而不是最初配置系统的人。另外,我对Spring及其配置设置也相当陌生

  • 确保
    AbstractDAO
    已迁移到
    EntityManager
    API,并在注入点(通常是setter)上使用
    @PersistenceContext
  • 使用
    启用注释配置,或配置
    持久化注释BeanPostProcessor
    以启用将
    EntityManager
    注入DAO。您可以完全摆脱
    AbstractDAO
    的bean定义。请注意,如果您在某处激活了
    ,这应该已经是现成的了

  • PS:如果你正在迁移,你可能想立即升级到Spring 4.2。如果没有选择,请使用最新的Spring 4.1版本(撰写本文时为4.1.7)。

    很抱歉延迟回复。以下是更改:在上面的引用中删除了jpaTemplate。上面的abstractDAO没有属性引用。我们能够通过junit测试。在WL 12c启动期间,我们现在得到以下异常:原因:java.lang.ClassCasteException:net.sf.ehcache.store.component.ReadWriteSerializationCopyStrategy无法强制转换为net.sf.ehcache.store.component.ReadWriteCopyStrategy在此之前还有其他springframework异常,但由于空间不足,我无法将它们粘贴到此处这里的原因是:java.lang.RuntimeException:ReadWriteSerializationCopyStrategy未实现net.sf.ehcache.store.component.CopyStrategy