@Transactional(readOnly = true)
  private void validateAsUpdate(Usuario usuario, boolean ignorePessoa) {
    if (ignorePessoa) {
      validateIgnoringIdAndPessoa(usuario);
    } else {
      validateIgnoringId(usuario);
    }

    if (usuario.getUsuarioId() == null) {
      throw new HttpException(
          EXCEPTION_USUARIO_USUARIO_ID_MUST_NOT_BE_NULL, HttpStatus.NOT_ACCEPTABLE);
    }

    if (findOne(usuario.getUsuarioId()) == null) {
      throw new HttpException(EXCEPTION_USUARIO_NOT_FOUND, HttpStatus.NOT_ACCEPTABLE);
    }

    Usuario foundUsuarioByApelido = findByApelido(usuario.getApelido());

    if (foundUsuarioByApelido != null) {
      if (!foundUsuarioByApelido.getUsuarioId().equals(usuario.getUsuarioId())) {
        throw new HttpException(
            EXCEPTION_USUARIO_APELIDO_IS_ALREADY_IN_USE, HttpStatus.NOT_ACCEPTABLE);
      }
    }
  }
  @Transactional(readOnly = true)
  private void validateAsInsert(Usuario usuario, boolean ignorePessoa) {
    if (ignorePessoa) {
      validateIgnoringIdAndPessoa(usuario);
    } else {
      validateIgnoringId(usuario);
    }

    if (usuario.getUsuarioId() != null) {
      throw new HttpException(EXCEPTION_USUARIO_USUARIO_ID_MUST_BE_NULL, HttpStatus.NOT_ACCEPTABLE);
    }

    if (findByApelido(usuario.getApelido()) != null) {
      throw new HttpException(
          EXCEPTION_USUARIO_APELIDO_IS_ALREADY_IN_USE, HttpStatus.NOT_ACCEPTABLE);
    }
  }