POST-ответ Spring Data Rest отличается от ответа GET - PullRequest
0 голосов
/ 26 ноября 2018

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

Я ожидаю, что оба запроса будут давать один и тот же ответ?

1 Ответ

0 голосов
/ 05 декабря 2018

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

public class Competition {
    @Id
    private String uname;

    [...]

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