Spring Boot CrudRepository Erasure Clash

时间:2017-09-12 16:55:49

标签: spring maven spring-data-jpa

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

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

然而,我的编译器抱怨&#34;保存(T)在&#39; PersistingRepository&#39;冲突与拯救(S)&#39; in&#39; org.springframework.data.repository.CrudRepository&#39 ;;两种方法都有相同的擦除,但都没有覆盖其他方法&#34;

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

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

1 个答案:

答案 0 :(得分: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