为BigDecimal使用正确的注释

时间:2019-06-20 14:20:57

标签: java annotations lombok

我有一个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 个答案:

答案 0 :(得分:1)

@ validation-api的正面注释