Java 如何对更新api中仅更改的字段进行验证?
如何仅对更新api上作为json的已更改字段进行验证 项目用途: java+maven+hibernate+SpringMVCJava 如何对更新api中仅更改的字段进行验证?,java,spring,hibernate,spring-mvc,spring-boot,Java,Spring,Hibernate,Spring Mvc,Spring Boot,如何仅对更新api上作为json的已更改字段进行验证 项目用途: java+maven+hibernate+SpringMVC @Entity @Component("user") @Table(name="user") @DynamicUpdate @Inheritance(strategy = InheritanceType.JOINED) public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@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);
}
@SuppressWarnings({“unchecked”,“rawtypes”})
@后映射(value=“/candidate”)
public ResponseEntity addCandidate(@Valid@RequestBody-Candidate-Candidate,BindingResult){
映射错误=新建HashMap();
if(result.hasErrors()){
这里将错误保存在错误列表中。
}
错误。放置(“错误”,错误列表);
返回新的响应状态(错误,HttpStatus.不可接受);
}
候选服务。添加候选(候选);
返回新的ResponseEntity(HttpStatus.CREATED);
}
由于上述逻辑,它将检查所有实际上不更新的属性。
还有哪些方法仅对更改的属性应用验证
更多说明:
我有三节课
现在,当我第一次注册时,我只想在email+password上进行验证,但这里由于@valid annotation,它对所有属性进行验证。
Candidate
是User
类的子类,在这个控制器方法中,您只想检查从User
类继承的部分约束,对吗?请参阅问题中的更多解释好的,关于使用必要的约束创建dto类如何?在一般情况下,在控制器中使用实体是个坏主意。更好的选择是接收带有必要约束的dto类,然后将其映射到实体。我可以在存储库类中使用@valid annotation吗?