Spring Boot-验证在使用DTO的POST上不起作用



我有问题。我尝试使用@Valid注释验证传递给我的DTO的数据,但没有结果。在堆栈跟踪中,数据通常插入数据库中。我预计至少会有一个糟糕的请求。

起初,我只在POST方法中进行测试。

控制器

@PostMapping
public ResponseEntity<UserResponse> createUser(@Valid @RequestBody UserForm dto) {
User userToAdd = dto.dtoToUser();
userService.createUser(userToAdd);
return new ResponseEntity<>(UserResponse.convertToDto(userToAdd), HttpStatus.CREATED);
}

DTO

public class UserForm {
@NotBlank
private String name;
@CPF
private String cpf;
@Email
private String email;
@NotBlank
private LocalDate birthDate;
public UserForm(String name, String cpf, String email, LocalDate birthDate) {
this.name = name;
this.cpf = cpf;
this.email = email;
this.birthDate = birthDate;
}
public User dtoToUser() {
return new User(this.name, this.email, this.cpf, this.birthDate);
}

Stacktrace

Hibernate: insert into user (id, birth_date, cpf, email, name) values (null, ?, ?, ?, ?)

我最终发现,从pom.xml中删除依赖项解决了这个问题。

尽管我还没有将这个依赖项导入到我的项目中。它引起了一些冲突,并没有给我在堆栈中任何错误。

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>7.0.1.Final</version>
</dependency>

相关内容

  • 没有找到相关文章