如果集合为空,Spring hateoas资源不会以类似嵌入格式的HAL返回数据

时间:2019-05-18 11:58:34

标签: spring-boot spring-data spring-hateoas

我有这种服务方法,其职责是从数据库中获取作业并将其返回为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;
    }

}

获得预期结果的解决方案是什么?

0 个答案:

没有答案