gpt4 book ai didi

java - 从 Spring Data JPA 1.4 升级到 1.8 后,如何解决自定义 JpaRepositoryFactory 中的编译错误?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:31 25 4
gpt4 key购买 nike

基本上这是我想从 1.4.5.RELEASE 升级到 1.8.0.RELEASE 时的情况。到目前为止我注意到的是:

  • LockModeRepositoryPostProcessor 变成了 CrudMethodMetadataPostProcessor
  • LockMetadataProvider 变成了 CrudMethodMetadata

现在,我们有一些自定义的 jpa 存储库工厂,为此我们像这样扩展 JpaRepositoryFactory:

class CustomJpaRepositoryFactory extends JpaRepositoryFactory {

protected <T, ID extends Serializable> JpaRepository<?, ?> getTargetRepository{

SimpleJpaRepository<?, ?> repo;
// some custom code

LockModeRepositoryPostProcessor lockModePostProcessor = LockModeRepositoryPostProcessor.INSTANCE;
repo.setLockMetadataProvider(lockModePostProcessor.getLockMetadataProvider());

}
}

这是可能的,因为 LockModeRepositoryPostProcessor 枚举是公开的。现在,新的 CrudMethodMetadataPostProcessor 是包保护的,同样的技巧将不起作用。我意识到我可以做到这一点:

 super.getTargetRepository(metadata);

在后台会发生这样的事情:

repository.setRepositoryMethodMetadata(lockModePostProcessor.getLockMetadataProvider());

但这似乎太具有误导性了。任何来自 Spring Data JPA 项目的人?

最佳答案

优先覆盖 JpaRepositoryFactory.getTargetRepository(RepositoryMetadata, EntityManager)。此方法从 JpaRepositoryFactory.getTargetRepository(RepositoryMetadata) 调用,它将负责使用必要的 CrudMethodMetadata 填充您创建的存储库实例。

关于java - 从 Spring Data JPA 1.4 升级到 1.8 后,如何解决自定义 JpaRepositoryFactory 中的编译错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29392479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com