使用 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
这样就创建了所需的链接。
马蒂亚斯
当我在路径“../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
这样就创建了所需的链接。
马蒂亚斯