在休息ubdate請求上,首先我從數據庫讀取相關對象,然後使用dozer框架standart mapper,DozerBeanMapper將第二個映射到dbObject。接下來,我試圖驗證新的映射對象,但驗證失敗,因爲一個字段註釋 @NotEmpty(message = "Name cannot be empty ")
似乎爲空,我知道這是因爲dbObject是一個動態代理對象引用我的實體處理hibernate,有沒有什麼辦法驗證託管用hibernate.validator.constaints使用hibernate驗證器註釋bean。在託管實體上的Bean驗證
@PUT
public Response update(QueryDTO dto) throws ServiceException {
log.info("Request for upadating query");
Query dbObject= this.persistenceService.find(Query.class,dto.getSystemId());
if(dbObject.getVersion()!=dto.getVersion()){
throw new InvalidVersionException("Db version is" + dbObject.getVersion());
}
this.mapper.map(dto,dbObject);
Set<ConstraintViolation<Query>> validationResult= this.validator.validate(dbObject);
if(!validationResult.isEmpty()){
throw new ValidationException(StringifyUtil.buildExceptionMessage(validationResult));
}
Query updatedObject= this.persistenceService.update(dbObject);
return ok(updatedObject);
}