В моем проекте Spring Data Rest у меня есть объект Competition, который ссылается на объект GeoLocation:
public class Competition {
@Id
private String uname;
[...]
@NotNull
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private GeoLocation geoLocation;
}
public class GeoLocation {
@Id private Long id;
private Double latitude;
private Double longitude;
}
Поскольку для каждого Competition должен быть определен GeoLocation, объект Competition обрабатывает создание через cascade. При создании новой сущности Competition через POST я получаю следующий ответ:
{
"uname": "Some Competition",
"geoLocation": {
[content of geoLocation]
},
"_links": {
[...]
}
}
Но когда я вызываю вновь созданный конкурс, содержимое GeoLocation будет заключено в поле content.
{
"uname": "Some Competition",
"geoLocation": {
"content": {
[content of geoLocation]
}
},
"_links": {
[...]
}
}
Можно ли ожидать, что оба запроса дадут одинаковый ответ?
@AlanHay, это выглядит почти идентично, спасибо.
Если это так, то, вероятно, решит проблему налаживание отношений.
Ты снова прав @AlanHay. Переход на Eager решил эту проблему.
@JsonUnwrapped решил для меня эту проблему:
public class Competition {
@Id
private String uname;
[...]
@NotNull
@JsonUnwrapped
@OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private GeoLocation geoLocation;
}
Возможно такая же проблема, о которой я спрашивал здесь: stackoverflow.com/questions/42395831/…