首页 > 解决方案 > 如何检索@RepositoryRestResource 注解生成的嵌套剩余数据资源?

问题描述

我必须由 Spring 数据 REST 支持的 Spring Boot 应用程序公开的实体。

@Entity
@Table(name = "joke")
@Data
public class Joke {

  @Id
  @Column(name = "joke_id")
  private Long id;

  @Column(name = "content")
  private String content;

  @JsonProperty("category")
  @JoinColumn(name = "category_fk")
  @ManyToOne(fetch = FetchType.EAGER)
  private Category category;
}

和类别

@Entity
@Table(name = "category")
@Data
public class Category {

  @Id
  @Column(name = "category_id")
  private int id;

  @Column(name = "name")
  private String name;
}

它工作正常并公开了 HAL+Json 格式。我正在使用Traverson client哪个工作正常:

Traverson client = new Traverson(URI.create("http://localhost:8080/api/"),
        MediaTypes.HAL_JSON);

    HashMap<String, Object> parameters = Maps.newHashMap();
    parameters.put("size", "2");

    PagedModel<JokesDTO> jokes = client
        .follow("jokes")
        .withTemplateParameters(parameters)
        .toObject(new PagedModelType<JokesDTO>() {
        });

    return jokes;

JokesDTO 是:

@Builder(toBuilder = true)
@Value
@JsonDeserialize(builder = JokesDTO.JokesDTOBuilder.class)
@JsonInclude(Include.NON_NULL)
public class JokesDTO {

  private String content;

  @JsonPOJOBuilder(withPrefix = "")
  @JsonIgnoreProperties(ignoreUnknown = true)
  public static class JokesDTOBuilder {

  }
}

我是 HAL 和 HateOS 的新手,我想实现两件事(问题是 - 是否可能,以及如何):

  1. 基于Traverson client调用,如何在一次调用中检索类别(或链接到类别)?如何扩展我写的内容。而且我不是在谈论@JsonProperty在我的类定义中添加额外的注释。

  2. 是否可以从 Spring 数据 REST 公开内部查询,因此我可以通过一次调用获取所有数据,是否可以使用 @RepositoryRestResource?

标签: restspring-dataspring-data-resthal

解决方案


推荐阅读