@Transactional(readOnly = true)
 public Page<Map<String, Object>> findAll(
     CustomRepositorySelector<Usuario> customRepositorySelector,
     Specification<Usuario> specification,
     Pageable pageable) {
   return usuarioRepository.findAll(
       customRepositorySelector, Specifications.where(specification), pageable);
 }
  @Transactional
  public Usuario saveAsUpdateByEstabelecimento(Long usuarioId, Usuario usuario, boolean encrypt) {
    if (usuarioRepository.findOne(usuarioId) != null) {
      usuario.setUsuarioId(usuarioId);

      return saveAsUpdateByEstabelecimento(usuario, encrypt);
    } else {
      throw new HttpException(EXCEPTION_USUARIO_NOT_FOUND, HttpStatus.NOT_ACCEPTABLE);
    }
  }
 @Transactional(readOnly = true)
 public Page<Map<String, Object>> findAll(
     CustomRepositorySelector<Usuario> customRepositorySelector,
     Specification<Usuario> specification,
     Pageable pageable,
     Long pessoaId,
     Long paiPessoaId) {
   return usuarioRepository.findAll(
       customRepositorySelector,
       Specifications.where(specification)
           .and(pessoaIdEqualsOrPaiPessoaIdEquals(pessoaId, paiPessoaId)),
       pageable);
 }
 @Transactional(readOnly = true)
 public Page<Usuario> findAll(Specification<Usuario> specification, Pageable pageable) {
   return usuarioRepository.findAll(Specifications.where(specification), pageable);
 }
 @Transactional(readOnly = true)
 public Long count() {
   return usuarioRepository.count();
 }
 @Override
 @Transactional(readOnly = true)
 public Usuario findOne(Long usuarioId) {
   return usuarioRepository.findOne(usuarioId);
 }
 @Transactional
 public void delete(Long usuarioId) {
   if (findOne(usuarioId) != null) {
     usuarioRepository.delete(usuarioId);
   }
 }
 @Transactional
 private Usuario save(Usuario usuario, boolean encrypt) {
   return usuarioRepository.save(encrypt ? encrypt(usuario) : usuario);
 }
 @Transactional(readOnly = true)
 public Usuario findByApelido(String apelido) {
   return usuarioRepository.findByApelido(apelido);
 }