2016-07-20 10 views
3

モデルを定義しました。パラメータタイプを "Double"として定義しました。制約 'javax.validation.constraints.Size'のバリデーションタイプ 'java.lang.Double'のバリデータが見つかりませんでした

@Size(max = 50) 
private Double priority; 

私が保存しようとすると、Hiberanteは例外[1]をスローします。

私はここで逃した検証は何ですか? (@Sizeを追加しようとしましたが、削除しましたが、同じ問題が発生します)

私のエンドポイントには、次のように投稿します。

{ 
... 
"priority":100.0, 
.. 
} 

[1]

Caused by: javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.Size' validating type 'java.lang.Double'. Check configuration for 'priority' 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.throwExceptionForNullValidator(ConstraintTree.java:229) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorNoUnwrapping(ConstraintTree.java:310) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getConstraintValidatorInstanceForAutomaticUnwrapping(ConstraintTree.java:244) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:163) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:116) 
    at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:87) 
    at org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:73) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateMetaConstraint(ValidatorImpl.java:592) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:555) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:490) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:454) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:406) 
    at org.hibernate.validator.internal.engine.ValidatorImpl.validate(ValidatorImpl.java:204) 
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:114) 
    at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:78) 
    at org.hibernate.action.internal.EntityIdentityInsertAction.preInsert(EntityIdentityInsertAction.java:197) 
    at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:75) 
    at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:597) 
    at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:232) 
    at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:213) 
    at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:256) 
    at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:317) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:272) 
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178) 
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:109) 
    at org.hibernate.jpa.event.internal.core.JpaSaveEventListener.saveWithGeneratedId(JpaSaveEventListener.java:56) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192) 
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177) 
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32) 
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73) 
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:679) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:671) 
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:666) 
    at com.cdi.crud.infra.Crud.save(Crud.java:488) 

答えて

4

@Size制約が最小値と文字列値の最大長を指定するために使用されます。可能性がある仕様は、ダブルフロート値が原因の可能丸め誤差にサポートされていないことを示していること、しかし、

@DecimalMax("50.0") 
private Double priority; 

注意を、と(自分の場合は休止状態、)プロバイダつまり:あなたは代わりに@DecimalMax制約を使用する必要があります近似的なサポートを提供します。いずれにしても、BigDecimalに切り替える方が良いでしょう:

@DecimalMax("50.0") 
private BigDecimal priority; 
+0

ありがとうございます。 – Ratha

関連する問題