Como desativar a validação do Hibernate em um projeto Spring Boot

Eu tenho um projeto de inicialização que possui um CrudRepository, uma Entidade e um Controlador. Estou basicamente tentando persistir uma entidade com base nos dados passados para o Controller.

Para fazer isso, estou usandospring-boot-starter-jpa. Minha entidade é anotada com anotações JSR-303, que são verificadas no controladorantes os dados são passados para o CrudRepository para persistência.

Método do controlador:

@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);
}

Entidade:

@Entity /* JPA */
public class User {

   @Id /* JPA */
   @Column(name="email_address", nullable=false, length=255) /* JPA */
   @UserUnique
   private String emailAddress;

}

A causa dos meus problemas é aUserUnique anotação. Seu validador é assim:

public class UserUniqueValidator implements ConstraintValidator<UserUnique, String> {

   private UserRepository users;

   @Autowired
   public UserUniqueValidator(UserRepository users) {
       this.users = users;
   }

   @Override
   public void initialize(UserUnique annotation) {}

   @Override
   public boolean isValid(String value, ConstraintValidatorContext context) {
       return users.findOne(value) == null;
   }
}

O que parece estar acontecendo é que a validação está sendo executada duas vezes. Uma vez no controlador via@Valid anotação e uma vez quando o Hibernate tenta persistir o objeto. No entanto, quando o Hibernate tenta manter o objeto, ele lança:

javax.validation.ValidationException: HV000064: Unable to instantiate ConstraintValidator: class test.UserUniqueValidator`

Isso parece ser porque não tem conhecimento da mola e não pode injetar a dependência no construtor. Então, o que eu quero fazer é desativar completamente a validação do Hibernate (como redundante e já acontecendo no controlador).

Parece haver uma propriedade chamadajavax.persistence.validation.mode que você pode definirnone. No entanto, durante toda a minha vida, não consigo descobrir onde defini-lo em uma configuração baseada em código.

Eu percebo que existem perguntas comoInjeção de dependência JSR-303 e Hibernate mas todos eles estão usando a configuração xml e configurando manualmente partes da camada de persistência.

O que eu quero fazer é "pós-configurar" as partes necessárias da camada de persistência que o Spring Boot cria para mim, porque se eu definir o meu próprio, não utilizarei mais a configuração automática do Spring Boot. Alguém pode me ajudar a determinar se 1) isso é possível e 2) quais partes eu preciso configurar e como?

Obrigado!

questionAnswers(1)

yourAnswerToTheQuestion