Ответ Spring Data Rest POST отличается от ответа GET

В моем проекте 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": {
        [...]
    }
}

Можно ли ожидать, что оба запроса дадут одинаковый ответ?

Возможно такая же проблема, о которой я спрашивал здесь: stackoverflow.com/questions/42395831/…

Alan Hay 26.11.2018 09:35

@AlanHay, это выглядит почти идентично, спасибо.

Sebastian Ullrich 26.11.2018 10:45

Если это так, то, вероятно, решит проблему налаживание отношений.

Alan Hay 26.11.2018 10:57

Ты снова прав @AlanHay. Переход на Eager решил эту проблему.

Sebastian Ullrich 26.11.2018 21:23
1
4
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@JsonUnwrapped решил для меня эту проблему:

public class Competition {
    @Id
    private String uname;

    [...]

    @NotNull
    @JsonUnwrapped
    @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
    private GeoLocation geoLocation;
}

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