У меня есть 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\"])"
}