【问题标题】:Spring Boot CrudRepository Erasure ClashSpring Boot CrudRepository 擦除冲突
【发布时间】:2018-02-21 05:46:41
【问题描述】:

我需要一个简单地将记录保存到数据库的存储库,因此我编写了一个自定义通用基础存储库,它扩展了CrudRepository,但只实现了保存方法,如here 所述。

@NoRepositoryBean
public interface PersistingRepository<T, ID extends Serializable> extends CrudRepository<T, ID> {
   T save(T item);
}

但是,我的编译器抱怨“'PersistingRepository' 中的 save(T) 与 'org.springframework.data.repository.CrudRepository' 中的 'save(S)' 冲突;这两种方法都有相同的擦除,但都不会覆盖其他”

对问题的研究使我找到了这些 SO 帖子:thisthis,它们将责任归咎于 spring-data-commonsspring-data-jpa 之间的依赖问题。将我的 spring-boot-starter-parent 版本更新为 1.5.7.RELEASE 会导致这些依赖项更新为 MavenCentral 上可用的最新版本(commons:1.13.7,jpa:1.11.7),但擦除类仍然存在。

所以我的问题是如何解决这种依赖冲突?

【问题讨论】:

    标签: spring maven spring-data-jpa


    【解决方案1】:

    与其扩展 CrudRepostory,不如扩展它的基接口 Repository 并只定义您想要公开的方法。确保它与 CrudRepository 中定义的方法的签名相匹配

    Spring 文档在下面的链接中定义了如何执行此操作。查找 1.2.1 定义存储库接口部分

    https://docs.spring.io/spring-data/data-commons/docs/1.6.1.RELEASE/reference/html/repositories.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 2016-07-01
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-04
      • 2019-08-10
      相关资源
      最近更新 更多