1

我试图将我的项目从升级spring-boot-1.4.3.RELEASEspring-boot-1.5.9.RELEASE.

1.4.3.RELEASE我使用存储库的自定义实现的方式如下:

  1. 制作了一个MyCustomRepositroy扩展的接口JpaRepository
  2. 有一个MyCustomRepositoryImpl实现MyCustomRepositroy和的类SimpleJpaRepository。在那个类中,我改变了
    of和方法的行为save,因为我需要 特定类型的实体的特定行为(假设我需要为所有实现接口的实体自定义)finddelete
    saveSpecial
  3. 我做了一个MyCustomJpaRepositoryFactoryBean延伸的JpaRepositoryFactoryBean。在那个工厂,我已经重写createRepositoryFactory并给了它我的MyRepositoryFactory实现。在MyRepositoryFactory实现中,我覆盖了getTargetRepository, 和getRepositoryBaseClass. 在这些方法中,我检查实体是否属于 type Special,如果是,则返回MyCustomRepositoryImpl,否则返回SimpleJpaRepository

此外,我可以在我的MyCustomRepositoryImpl类中获取 beanFactory,因为我调用我自己的构造函数,MyCustomRepositoryImpl它也有一个 beanFactory 参数 via getTargetRepositoryViaReflection

现在,使用新版本(使用spring-data-commons-1.13.9.RELEASE),我无法覆盖 Factory 类,因此无法为每个实体决定要提供哪个实现,也无法获取 beanFactory。

有什么办法可以得到我想要的吗?

对不起,我不能在这里发布我的代码。

PS - 我的项目是一个基于弹簧的库,所以我不能对实体做任何事情,因为我的客户声明了它们,我只知道有些实体实现了Special接口,有些没有

4

1 回答 1

0

我试图弄清楚 1.5.9.RELEASE 中发生了什么,但与此同时,就像仅供参考一样 - 1.5.6.RELEASE 工作正常。

尝试从 1.5.6.RELEASE 更新到 1.5.9.RELEASE 时遇到同样的问题

于 2018-01-29T21:29:51.763 回答