如何使用我自己的findById声明而不是Spring Data的声明?

时间:2019-05-08 04:26:23

标签: spring-boot spring-data-jpa spring-data

我正在尝试将spring-boot版本升级到2.1.2,并且我们正在使用Spring data JPA进行数据库操作。

在很多地方,我们正在调用findById(Id)方法,该方法已更改为Optional<T> findById(Id).orElse(null),这使我使用返回类型不是findById(Id)的现有Optional<>引发了编译时错误。

为克服这种情况,我实现了一个自定义接口,该接口扩展了BaseJpaRepository,但是在这里,新旧版本的Spring Boot的方法名称和参数都相同。

我试图按以下方式致电

@NoRepositoryBean

public interface CustomBaseJpaRepository<T, ID extends Serializable> extends JpaRepository<T, ID>  {

    default  T findById(ID id) {
        return (T) findById(id).orElse(null);
    }
}

但是它正在尝试循环,而且我不确定如何从我的CrudRepository.findById(Id)调用findById(),因此,我需要做的改动很小。

1 个答案:

答案 0 :(得分:0)

我建议将现有方法重命名为其他名称。 例如findByIdNullable。 使用现代IDE,这应该是一个容易的更改。