【问题标题】:Spring Data, Repository Rest Resource Call Inherited MethodsSpring Data、Repository Rest 资源调用继承方法
【发布时间】:2020-01-15 03:10:56
【问题描述】:
@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)' in 'com.foo.repository.EmployeeRepository' 与 'findAll(示例,可分页)' 在 'org.springframework.data.repository.query.QueryByExampleExecutor'; 两种方法都有相同的擦除,但都没有覆盖另一个

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

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

【问题讨论】:

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


【解决方案1】:

正确的签名是,

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

【讨论】:

  • 我尝试了你的方法,然后我调用了“...api/employees/search”。但是我看不到 findAll 方法。
猜你喜欢
  • 1970-01-01
  • 2017-03-31
  • 2015-11-13
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2014-10-16
  • 2015-08-30
  • 2023-03-09
相关资源
最近更新 更多