Because it's throwing that exception before even reaching the point where it would throw a ConstraintViolationException.
Here
user.setPasword(bCryptPasswordEncoder.encode(userModel.getPasword()));It's bCryptPasswordEncoder.encode(userModel.getPasword()) that is throwing the IllegalArgumentException, because it doesn't expect a null argument.