【发布时间】:2018-10-26 08:25:47
【问题描述】:
我有一个实体类“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 的文章,但我不确定这是否是解决方案。
感谢您的帮助 马蒂亚斯
【问题讨论】:
-
您已经创建了自定义控制器/服务,因此您必须组装资源。您可以查看使用内置的 QueryDSL 支持让 Spring Data Rest 处理过滤(即没有自定义控制器或服务),您将通过附加查询参数获得所需的响应,例如
/employees?surname=smith
标签: spring-boot spring-data-rest spring-hateoas