Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何对更新api中仅更改的字段进行验证?_Java_Spring_Hibernate_Spring Mvc_Spring Boot - Fatal编程技术网

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

Java 如何对更新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)

如何仅对更新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)
@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);
}
由于上述逻辑,它将检查所有实际上不更新的属性。 还有哪些方法仅对更改的属性应用验证

更多说明: 我有三节课

  • 使用者
  • 候选人
  • 雇员
  • 在这里,用户类包含候选人和员工的所有公共信息,并且在forther密码中还包含用于登录的信息


    现在,当我第一次注册时,我只想在email+password上进行验证,但这里由于@valid annotation,它对所有属性进行验证。

    Candidate
    User
    类的子类,在这个控制器方法中,您只想检查从
    User
    类继承的部分约束,对吗?请参阅问题中的更多解释好的,关于使用必要的约束创建dto类如何?在一般情况下,在控制器中使用实体是个坏主意。更好的选择是接收带有必要约束的dto类,然后将其映射到实体。我可以在存储库类中使用@valid annotation吗?