Tuve el mismo problema, pero solo habilitar la validación no funcionó para mí, esto funcionó tanto con JPA como con MongoDb para evitar que cualquier otra persona gaste años en esto. Esto no solo hace que la validación funcione, sino que obtengo un agradable error 400 en lugar del 500 predeterminado.
Tuve que agregar esto a mis dependencias build.gradle
compile('org.hibernate:hibernate-validator:4.2.0.Final')
y esta clase de configuración
@Configuration
public class CustomRepositoryRestConfigurerAdapter extends RepositoryRestConfigurerAdapter {
@Bean
public Validator validator() {
return new LocalValidatorFactoryBean();
}
@Override
public void configureValidatingRepositoryEventListener(ValidatingRepositoryEventListener validatingListener) {
validatingListener.addValidator("afterCreate", validator());
validatingListener.addValidator("beforeCreate", validator());
validatingListener.addValidator("afterSave", validator());
validatingListener.addValidator("beforeSave", validator());
}
}