Comment désactiver la validation Hibernate dans un projet Spring Boot

J'ai un ressort de démarrage du projet qui a un CrudRepository, une Entité et un Contrôleur. Je suis en fait, d'essayer de persister une entité basée sur les données transmises au Contrôleur.

Pour ce faire, je suis en utilisant spring-boot-starter-jpa. Mon Entité est annoté avec la JSR-303 annotations, qui sont vérifiées dans le contrôleur avant les données sont transmises à la CrudRepository pour la persistance.

Méthode de contrôleur:

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

Entité:

@Entity /* JPA */
public class User {

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

}

La cause de mes problèmes est le UserUnique annotation. Son programme de validation ressemble à ceci:

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

Ce qui semble se passer, c'est, la validation doit se faire deux fois. Une fois dans le contrôleur via le @Valid annotation, et une fois quand Hibernate tente de persister l'objet. Cependant, quand Hibernate essaie conserver l'objet, il lance:

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

Ce qui semble être à cause de ses pas le printemps-conscient et je ne peux injecter de la dépendance dans le constructeur. Donc, ce que je veux faire est de désactiver la veille prolongée de validation complètement (comme sa redondant et déjà le cas dans le contrôleur).

Il semble y avoir une propriété appelée javax.persistence.validation.mode que vous pouvez configurer pour none. Cependant, je ne peux pas pour la vie de me comprendre à l'endroit où le mettre dans une base de code de configuration.

Je me rends compte il ya des questions comme La JSR-303 injection de dépendance et d'Hibernation mais ils sont tous à l'aide de xml de configuration et configuration manuelle des parties de la couche de persistance.

Ce que je veux faire est de "post-configurer" les pièces nécessaires de la couche de persistance que le Printemps de Démarrage crée pour moi, parce que si je définir ma propre alors je ne suis plus en tirant parti de Printemps de Démarrage de la configuration automatique. Quelqu'un peut-il m'aider à déterminer si 1) c'est possible et 2) quelles pièces dois-je configurer et comment?

Merci!

source d'informationauteur Erin Drummond