如何仅对更新api中的更改字段进行验证?

时间:2018-07-25 14:08:14

标签: java spring hibernate spring-mvc spring-boot

如何仅对更新API上的json来的更改字段进行验证。

项目用途: java + maven + hibernate + spring mvc

@Entity
@Component("user")
@Table(name="user")
@DynamicUpdate
@Inheritance(strategy = InheritanceType.JOINED)
public class User {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Range(min = 0, max = 1000000)
@Column(name="user_id")
private int UserId;

@Size(min = 6, max = 20)
@Column(name="password")
//@org.hibernate.annotations.Type(type="StringType")
private String password;

@Size(min=2, max=20)
@Column(name="first_name")
private String firstName;

@Size(min=2, max=20)
@Column(name="last_name")
private String lastName;

@Size(min=2,max=20)
@Column(name="surname")
private String surName;

@Email
@Column(name="email_address")
private String EmailAddress;

@Size(min = 10, max = 10)
@Phone(message = "please enter valid phone number")
@Column(name="mobile_number")
private String mobileNumber;
}

和我的更新API如下:

@SuppressWarnings({ "unchecked", "rawtypes" })
@PostMapping(value = "/candidate")
public ResponseEntity addCandidate(@Valid @RequestBody Candidate candidate, BindingResult result) {
    Map<String, Object> errors = new HashMap<String, Object>();
    if (result.hasErrors()) {
        here save error in errors list.
        }
        errors.put("error", errorList);
        return new ResponseEntity(errors, HttpStatus.NOT_ACCEPTABLE);
    }
    candidateService.addCandidate(candidate);
    return new ResponseEntity(HttpStatus.CREATED);
}

由于上述逻辑,它将检查实际上未更新的所有属性。 还有什么其他方法可以仅对更改的属性应用验证?

更多说明: 我有三堂课

  1. 用户
  2. 候选人
  3. 员工

这里的用户类别包含候选人和雇员的所有常见信息,并且在另外的密码中还包含用于登录的信息。

现在,第一次注册时,我只想仅通过电子邮件+密码进行验证,但是由于@valid注释,它对所有属性都进行了验证。

0 个答案:

没有答案