Используйте правильную аннотацию для BigDecimal - PullRequest
0 голосов
/ 20 июня 2019

У меня есть POJO с аннотацией Lombok, приведенной ниже,

@Setter
@Getter
public class OrderDto extends BaseDto {

    @JsonProperty( "products" )
    private final List<String> products;

    @JsonProperty( "basket_items" )
    private final List<BasketItemDto> basketItems;

    @JsonProperty( "timestamp" )
    @MockLocalDateTime( ignoreMillis = true )
    @JsonDeserialize( using = JavaOffsetDateTimeDeserializer.class )
    @JsonSerialize( using = JavaOffsetDateTimeSerializer.class )
    private OffsetDateTime timestamp;

    @JsonProperty( "amount" )
    @Min( value = 0L)
    private BigDecimal amount;

    @JsonProperty( "shop_id" )
    private Integer shopId;

}

Я хотел бы взять поле amount, принимающее значение выше нуля. Однако, когда я применил аннотацию @Min( value = 0L) и предоставил в запрос отрицательное значение суммы, приложение не сломалось.

Полагаю, причина в том, что amount имеет тип BigDecimal, а затем я использую Long с аннотацией.

Как использовать правильную аннотацию для фильтрации значения для BigDecimal?

Обновление

Я пытался использовать @DecimalMin("0.00"), и приложение по-прежнему не ломается. Но когда я задаю "amount": 05 начальным нулем, я получаю сообщение

{
    "success": false,
    "message": "JSON parse error: Invalid numeric value: Leading zeroes not allowed; nested exception is com.fasterxml.jackson.databind.JsonMappingException: Invalid numeric value: Leading zeroes not allowed\n at [Source: (PushbackInputStream); line: 4, column: 9] (through reference chain: com.xyz.bbb.dto.request.RequestDto[\"order\"])"
}

1 Ответ

1 голос
/ 20 июня 2019

@ Положительная аннотация валидации-API

...