【发布时间】:2022-01-19 00:13:24
【问题描述】:
控制器中的代码 -
@PostMapping("/employees")
public Employee saveEmployee(@Valid @RequestBody Employee employee) {
return employeeService.saveEmployee(employee);
}
实体对象 -
@NotNull(message = "Department must not be null")
@Column(name = "department")
private String department;
假设我传递了一个部门字段为空的项目。 @NonNull 在这种情况下会抛出异常。但是我已经看到 @Valid 被用于相同的目的。有人可以详细说明为什么除了@NonNull 之外还需要使用@Valid 吗?
【问题讨论】:
-
您是否尝试删除
@Valid并发送空部门? -
是的。我得到一个例外。但只是一个不同的。
-
我猜在这种情况下你会从数据库中得到一个说你不能插入空值。需要
@Valid告诉 SpringBoot 自动引导默认的 JSR 380 实现(如 Hibernate Validator)并验证参数。没有它@NotNull不被考虑。 -
编辑了问题。现在,当我删除有效注释并发送一个空部门时,我得到部门不能为空作为输出。那么这如何在数据库中得到验证呢?我认为这是使用 NonNull 注释得到验证
-
那么您可能在实体本身中有
@Validated或@Valid注释。没有它,验证就不会启动。
标签: spring-boot jpa