@n199a
Java

Почему HATEOAS + @JsonView возвращает пустой объект?

Имеется объект с определенным набором полей c @JsonView:

public class OrderDto extends AbstractDto<OrderDto> {
    @Valid
    private UserDto user;

    @Valid
    private GiftCertificateDto giftCertificate;

    @JsonView(View.FindOrderForUser.class)
    private BigDecimal price;

    @JsonView(View.FindOrderForUser.class)
    private LocalDateTime purchaseDate;
}


Почему при возвращении данного объекта OrderDto в контроллере вместе с ссылками HATEOASв ответ я получаю пустоту:

@GetMapping(UrlMapping.ORDER_USER)
    @JsonView(View.FindOrderForUser.class)
    public EntityModel<OrderDto> findOrderForUser(@PathVariable long userId, @PathVariable long orderId) {
        OrderDto orderDto = orderService.findOrderForUser(orderId, userId);
        return EntityModel.of(orderDto);
    }


Результат:

{}

Но если я возвращаю простой объект OrderDto, то всё работает и отображаются только помеченный аннотацией @JsonView поля:

@GetMapping(UrlMapping.ORDER_USER)
@JsonView(View.FindOrderForUser.class)
public OrderDto findOrderForUser(@PathVariable long userId, @PathVariable long orderId) {
    return orderService.findOrderForUser(orderId, userId);
}


Результат:
{
    "createDate": "2021-06-25T21:38:01",
    "lastUpdateDate": "2021-05-21T17:19:06"
}


Но в этом случае нужно, чтобы присутствовали HATEOASссылки и результат был таким:

{
    "price": 1.00,
    "purchaseDate": "2021-11-15T10:38:45.193",

    "_links": {
        "self": {
            "href": "http://localhost:8080/orders/1"
        }
    }


Также в application.properties я задавал свойство spring.jackson.mapper.default-view-inclusion=true, но метод контроллера, в такой ситуации, возвращал все поля объекта OrderDto.

@JsonIgnore - не решение, т.к. иногда мне нужно выводить в виде JSON все поля объекта OrderDto, а в некоторых ситуациях, как эта, не все поля.
  • Вопрос задан
  • 34 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы