+-
从Spring Data JPA 1.4升级到1.8后,如何解决自定义JpaRepositoryFactory中的编译错误?
基本上就是我要从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填充您创建的存储库实例.
点击查看更多相关文章

转载注明原文:从Spring Data JPA 1.4升级到1.8后,如何解决自定义JpaRepositoryFactory中的编译错误? - 乐贴网