Spring 启动 REST 资源不显示链接对象(集)

Spring Boot REST Resource not showing linked objects (sets)

我有一个数据库和一些 classes。这些 class 链接到 OneToMany,依此类推。

如果我用 spring 打印对象本身,它包含所有内容。但是,如果我使用 Resource 功能打印它,它只包含变量,这些变量不是集合,也不会与其他 class.

链接。

如何将集合添加到输出?

默认情况下Spring Data REST 不显示关联资源,除非是链接。如果您想要,您必须定义描述您想要查看的字段的投影,无论它们是您描述的简单字段还是关联资源。参见

http://docs.spring.io/spring-data/rest/docs/current/reference/html/#projections-excerpts

例如,假设您有一个 Service 资源与 serviceTypeserviceGroupownerserviceInstances 和 [=18= 等资源的关联].如果您希望这些显示在响应正文中,您可以创建一个投影:

package my.app.entity.projection;

import org.springframework.data.rest.core.config.Projection;
...

@Projection(name = "serviceDetails", types = Service.class)
public interface ServiceDetails {   
    String getKey();
    String getName();   
    ServiceType getType();
    ServiceGroup getGroup();
    Person getOwner();
    List<ServiceInstance> getServiceInstances();    
    List<DocLink> getDocLinks();
    String getPlatform();
}

然后使用投影获取您的 URL:

http://localhost:8080/api/services/15?projection=serviceDetails

结果将包括预计属性:

{
  "name" : "MegaphoneService",
  "key" : "megaphone",
  "type" : {
    "key" : "application",
    "name" : "User Application",
    "description" : "A service that allows users to use a megaphone."
  },
  "owner" : null,
  "serviceInstances" : [ {
    "key" : "megaphone-a-dr",
    "description" : null,
    "loadBalanced" : true,
    "minCapacityDeploy" : null,
    "minCapacityOps" : 50
  }, ... ],
  ...
}