Spring数据,存储库剩余资源调用继承的方法

时间:2019-09-13 08:51:17

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

@RepositoryRestResource
public interface EmployeeRepository extends JpaRepository<Employee, Integer> {

    @Query("SELECT employee FROM Employee employee")
    List<Employee> getAll();

    Page<Employee> findAll(Example<Employee> employeeExample, Pageable pageable);

}

如果我打电话给我

.../api/employees/search/getAll它给了我getAll方法的结果

但是JpaRepository具有相同的功能,但我无法调用它:

.../api/employees/search/findAll

幸运的是,我能够编写具有相同功能的@Query方法。

但是现在我需要从QueryByExampleExecutor调用this方法(JpaRepository扩展了此接口)

<S extends T> Page<S> findAll(Example<S> var1, Pageable var2);

我为EmployeeRepository编写了一些函数,以便将其称为休息端点。

Page<Employee> findAll(Example<Employee> employeeExample, Pageable pageable);

但是我得到了下面的错误:

  

findAll(Example,Pageable)中的   'com.foo.repository.EmployeeRepository'与   的'findAll(Example,Pageable)'   'org.springframework.data.repository.query.QueryByExampleExecutor';   两种方法具有相同的擦除效果,但都不能覆盖另一种方法

我无法编写与该方法具有相同功能的@Query方法。

如何在Spring-Data中将继承的存储库方法称为Rest Enpoint?

1 个答案:

答案 0 :(得分:0)

正确的签名是

@Override
<S extends Employee> Page<S> findAll(Example<S> example, Pageable pageable)