Как получить вложенные ресурсы данных отдыха, созданные аннотацией @RepositoryRestResource? - PullRequest
1 голос
/ 30 мая 2020

У меня есть сущности, предоставляемые приложением загрузки Spring, работающим на основе данных Spring REST.

@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 data REST, чтобы я мог получить все данные одним вызовом, возможно ли это с помощью @RepositoryRestResource?

...