Как я могу включить ссылки в ответ на пружинный отдых?

Я определил два JPARepository с пружиной: «Человек» и «Адрес». Я также указал связь между человеком и адресом.

Я могу вызвать всех людей с: http: // локальный: 8080 / человек /

и все адреса с: http: // локальный: 8080 / адрес /

Также я могу получить адрес одного человека с помощью http: // локальный: 8080 / человек / 1 / адрес

Теперь я хотел бы получить адрес для каждого человека как вложенный адрес, когда я получаю запрос: http: // локальный: 8080 / человек /

Как я могу включить отношения в ответ?

Мои занятия по просьбе @nicolasl

@Entity
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String firstName;
    private String lastName;

    @OneToOne
    @JoinColumn(name = "address_id")
    private Address address;


    //Getter/Setter here


}

@Entity
public class Address {

    @Id
    @GeneratedValue
    private long id;

    @Column(nullable = false)
    private String location;

    @OneToOne(mappedBy = "address")
    private Person person;

    //Getter/Setter here
}

Вы захотите изучить Spring HATEOAS и Spring Data REST.

chrylis -cautiouslyoptimistic- 04.10.2018 22:35

Решил проблему с помощью проекций: stackoverflow.com/questions/38096217/…

Franken 05.10.2018 14:28
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
49
1

Ответы 1

Что ж, я думаю, вы просто не сможете, не используя автоматический механизм отдыха, предоставляемый Spring. Остальной API будет возвращать ссылки для получения связанных сущностей в разделе «_links» вашего ответа JSON (вы можете узнать больше об этом в http://stateless.co/hal_specification.html). Вам нужно будет вызвать эти ссылки, чтобы получить свои адреса.

Другой способ решить эту проблему - создать собственный репозиторий и собрать собственный ответ JSON.

Сделано в исходном посте @nicolasl

Franken 04.10.2018 21:54

Обновил ответ

nicolasl 04.10.2018 22:29

Не могу понять, почему не реализовали эту опцию. Получение 10 человек (с адресом) таким образом вызовет 11 запросов http и 11 запросов db. Это чертовски медленно

Franken 04.10.2018 22:58

Другие вопросы по теме