向@Valid发出请求

时间:2017-06-18 09:43:52

标签: java spring validation spring-boot jsr

我正在开发spring-boot应用程序,我需要在检查其他信息之前验证用户信息。这是一个片段:

ALTER TABLE Marriage ADD CONSTRAINT CK_OlderThan 
CHECK (fn_OlderThanSon(Person_id,Relative_id) = 'True');

当用户来自其他路线 / create-sp-user 时,我必须重新验证用户:

java.sql.SQLSyntaxErrorException: ORA-01735: invalid ALTER TABLE option

    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:450)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:399)
    at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:1059)
    at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:522)
    at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:257)
    at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:587)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:210)
    at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:30)
    at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:931)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1150)
    at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1309)
    at oracle.jdbc.driver.OracleStatementWrapper.executeQuery(OracleStatementWrapper.java:422)
    at com.company.Main.main(Main.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

你有什么想法吗?

祝你好运

1 个答案:

答案 0 :(得分:0)

就像Dominik所说,@ Valid注释在控制器中执行任何代码之前验证对象

如果要验证方法内的对象,则应使用自定义验证器。

实施org.springframework.validation.Validator并在控制器内调用validate方法。

@RequestMapping(value = "/create-sp-user", method = RequestMethod.POST)
    public String ceateCustomer(@Valid @RequestBody User user, BindingResult result){ 
      user.setSp(true);
      CustomValidator customValidator = new CustomValidator();
      customValidator.validate(user, result);

      if (result.hasErrors()){
        //do something
      } else {
        myService.create(user);
      }
}