Я определил два 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
}
Решил проблему с помощью проекций: stackoverflow.com/questions/38096217/…




Что ж, я думаю, вы просто не сможете, не используя автоматический механизм отдыха, предоставляемый Spring. Остальной API будет возвращать ссылки для получения связанных сущностей в разделе «_links» вашего ответа JSON (вы можете узнать больше об этом в http://stateless.co/hal_specification.html). Вам нужно будет вызвать эти ссылки, чтобы получить свои адреса.
Другой способ решить эту проблему - создать собственный репозиторий и собрать собственный ответ JSON.
Сделано в исходном посте @nicolasl
Обновил ответ
Не могу понять, почему не реализовали эту опцию. Получение 10 человек (с адресом) таким образом вызовет 11 запросов http и 11 запросов db. Это чертовски медленно
Вы захотите изучить Spring HATEOAS и Spring Data REST.