我有一个实体类“ Employee”,当我在路径“ ../employees”上使用Get请求时,Spring Data Rest返回所有雇员。默认情况下,它还会创建指向@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"
}
}
是输出的一部分。现在,我使用以下类中的规范过滤此列表。
@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);
}
}
不幸的是,这不返回任何链接。我知道,我可以手动添加链接,但是Spring Data Rest可以创建丢失的链接。如何使用此默认行为?
我读了一些有关PageResources的内容,但是我不确定这是否是解决方案。
感谢您的帮助 马蒂亚斯
答案 0 :(得分:0)
答案 1 :(得分:0)
一所大学能够帮助我。我正在寻找以下代码:
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是键,该类需要注释
@RepositoryRestController
以此创建所需的链接。
Matthias