Spring Data、Repository Rest 资源调用继承方法
Posted
技术标签:
【中文标题】Spring Data、Repository Rest 资源调用继承方法【英文标题】:Spring Data, Repository Rest Resource Call Inherited Methods 【发布时间】: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?
【问题讨论】:
可能是 ***.com/questions/25201306/… ***.com/questions/21116539/… 的副本 不,我只是问如何从 Spring Jpa 调用继承的方法作为 rest 端点,没有自定义方法实现。 【参考方案1】:正确的签名是,
@Override
<S extends Employee> Page<S> findAll(Example<S> example, Pageable pageable)
【讨论】:
我尝试了你的方法,然后我调用了“...api/employees/search”。但是我看不到 findAll 方法。以上是关于Spring Data、Repository Rest 资源调用继承方法的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data Redis - 对 Repository 的 @Transactional 支持
Spring Data Rest:为扩展 Revision Repository 的 Repository 公开新端点
Spring Data JPA 提供的各种Repository接口作用