我有这种服务方法,其职责是从数据库中获取作业并将其返回为HAL格式。
public Resources<Resource<UserJob>> getJobs(String userUniqueId) {
Set<UserJob> userJobs = userJobDao.findByUserUniqueId(userUniqueId);
List<Resource<UserJob>> resources = userJobs.stream().map(userJob -> jobResourceAssembler.toResource(userJob)).collect(Collectors.toList());
Resources<Resource<UserJob>> collectionResources = new Resources<>(resources);
return collectionResources;
}
因此,我正在使用stream
api将Resource
转换为Resources
。直到我们有一些可用列表为止,这种方法都可以正常工作
{
"_embedded": {
"userJobs": [
{//data
},
{//data
}
]
}
}
但是如果列表(userJobs
)为空,则返回的响应为:
[]
不是吗?
{
"_embedded": {
"userJobs": [ ]
}
}
资源汇编器是
@Component
public class UserJobResourceAssembler implements ResourceAssembler<UserJob, Resource<UserJob>> {
private EntityLinks entityLinks;
public UserJobResourceAssembler(EntityLinks entityLinks) {
this.entityLinks = entityLinks;
}
@Override
public Resource<UserJob> toResource(UserJob entity) {
Resource<UserJob> resource = new Resource<>(entity);
resource.add(
entityLinks.linkFor(UserJob.class, entity.getUser().getUniqueId()).slash(entity.getUserJobId()).withSelfRel()
);
return resource;
}
}
获得预期结果的解决方案是什么?