使用 Spring 数据 Rest 默认 link 创建

Use Spring Data Rest default link creation

当我在路径“../employees”上使用 Get 请求时,我有一个实体 class "Employee",Spring 数据剩余 return 所有员工.默认情况下,它还创建指向@OneToMany 关系的链接。例如

        "_links": {
                "self": {
                    "href": "http://localhost:9000/mep/api/employees/1003"
                },
                "employee": {
                    "href": "http://localhost:9000/mep/api/employees/1003"
                },
                "assignmentProjectEmployeeSet": {
                    "href": "http://localhost:9000/mep/api/employees/1003/assignmentProjectEmployeeSet"
                }
            }

是输出的一部分。现在,我使用以下 class.

中的规格过滤此列表
  @Service
  public class EmployeeFilterService {
   public Resources<Employee> getFilteredEmployees(Employee toBeFilteredEmployee) {

    List<Employee> filteredEmployees = employeeRepository.findAll(

          // filter stuff

    );

    List<Resource<Employee>> filteredEmployeesResources = new ArrayList<>();
    for (Employee e : filteredEmployees) {
        Resource<Employee> resource = new Resource<>(e);                      
        filteredEmployeesResources.add(resource);
    }
    return new Resources(filteredEmployeesResources);
   }
 }

很遗憾,这个return没有链接。我知道,我可以手动添加链接,但是 Spring Data Rest 能够创建丢失的链接。如何使用此默认行为?

我阅读了一些有关 PageResources 的内容,但我不确定这是否是解决方案。

感谢您的帮助 马蒂亚斯

一个有帮助的片段 - 检测策略:

因此,根据默认策略,您可以尝试使用自定义筛选方法添加存储库 class/interface,这也将包含在 link 中。

一所大学能够帮助我。我正在寻找以下代码:

public Resources<PersistentEntityResource> filterEmployee(@RequestParam Map<String, String> requestParam, PersistentEntityResourceAssembler assembler) {
    List<Employee> filteredList = employeeFilterService.getFilteredEmployees(requestParam);

    List<PersistentEntityResource> resourceList = new ArrayList<>();
    for (Employee e : filteredList) {
        resourceList.add(assembler.toResource(e));
    }
    return new Resources<>(resourceList);
}

PersistentEntityResourceAssembler 是关键,class 需要注解

@RepositoryRestController

这样就创建了所需的链接。

马蒂亚斯