2015-09-03 3 views
0

У меня есть поле: Ordinality DB: ORDINALITY NOT NULL NUMBER (2)HV000030: Нет валидатор не может быть найдено для типа: java.math.BigDecimal

@Column(name="ORDINALITY") 
@NotNull(message="Ordinality is Mandatory") 
@Size(max=2,message="Ordinality exceeded the limit, Max. 2 numbers are allowed.") 
private BigDecimal ordinality; 
  1. Я хочу, чтобы ограничить только для ввода чисел, каков будет точный синтаксис аннотации.
  2. Я получаю ниже ошибки, когда я даю правильное значение, а также не давая никакой ценности и не отправляю страницу.
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for type: java.math.BigDecimal. 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.verifyResolveWasUnique(ConstraintValidatorManager.java:218) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.findMatchingValidatorClass(ConstraintValidatorManager.java:193) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.getInitializedValidator(ConstraintValidatorManager.java:97) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:125) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91) 
    at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:83) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:547) 
+0

Что здесь означает обыденность? если его простое 2-значное число, почему вы храните его в BigDecimal? –

+0

JPA модель класс система сгенерирована. Он автоматически принимал BigDecimal вместо длинного. –

ответ

1

Чтобы установить точность базового поля базы данных, вы должны использовать точность и масштабные элементы @Column аннотацию.

@Column(precision=10, scale=2) 

Чтобы проверить номер использовать @DecimalMax аннотацию.

@DecimalMax("30.00") 
+0

Спасибо, Милан, Есть ли способ дать сообщение для несоответствия типов? Подобно тому, как пользователь вводит в качестве строки вместо номера, он отображает соответствующее сообщение. –

+0

Да, проверьте, какие сообщения Spring дает вам (например, typeMismatch.YourModel.ordinality) и добавьте в него свои значения в файле сообщений .properties. Проверьте этот [SO ответ] (http://stackoverflow.com/questions/5738242/jsr-303-validation-with-custom-message). –

Смежные вопросы