我有一个spring boot项目,它有一个CrudRepository,一个Entity和一个Controller.我基本上试图根据传递给Controller的数据来持久化实体.
要做到这一点,我正在使用spring-boot-starter-jpa.我的实体使用JSR-303注释进行注释,在将数据传递给CrudRepository以进行持久化之前,在控制器中对其进行检查.
控制器方法:
@RequestMapping(value = "users", method = { RequestMethod.POST })
public SuccessfulResponse<User> addUser(@Valid @RequestBody User user, BindingResult validation) {
if (validation.hasErrors()) {
throw new ValidationException(validation);
}
User saved = this.users.save(user);
return new SuccessfulResponse<User>(saved);
}
Run Code Online (Sandbox Code Playgroud)
实体:
@Entity /* JPA */
public class User {
@Id /* JPA */
@Column(name="email_address", nullable=false, length=255) /* JPA */
@UserUnique
private String emailAddress;
}
Run Code Online (Sandbox Code Playgroud)
我的问题的原因是UserUnique注释.它的验证器如下所示:
public class UserUniqueValidator implements ConstraintValidator<UserUnique, String> {
private UserRepository users;
@Autowired …Run Code Online (Sandbox Code Playgroud)