Vi nessa aula que é apresentado somente o método find, no qual busca apenas um cliente, de acordo com o id. E caso queira fazer uma pesquisa geral pelo nome por exemplo, como se faz com uso do método ArrayList, como seria com o hibernate ?
Vi nessa aula que é apresentado somente o método find, no qual busca apenas um cliente, de acordo com o id. E caso queira fazer uma pesquisa geral pelo nome por exemplo, como se faz com uso do método ArrayList, como seria com o hibernate ?
Olá Andrei, tudo bem?
Imaginando que a nossa lista seria do objeto Conta e que vc já tenha um EntityManager que chamamos de manager, seu código ficaria mais ou menos assim:
public List<Conta> lista() {
return this.manager.createQuery("select c from Conta c").getResultList();
}
Eai Andrei, beleza?
Então, para conseguir executar a sua pesquisa você teria que criar uma query customizada ou usar o Criteria, que é uma API do hibernate para fazer esse tipo de busca.
Como eu acho o Criteria muito verboso eu desaconselho o uso dessa API para buscas simples.
No seu caso teriamos que escrever a query na mão, que também não é nada muito complicado olha só como ficaria:
public List<Cliente> buscaPor(String nome){
return this.manager.createQuery("select c from Cliente c where c.nome like :nome", Cliente.class)
.setParamater("nome", "%" + nome + "%")
.getResultList();
}
Explicando um pouco:
Nosso método recebe o nome pelo qual vamos pesquisar na nossa tabela de clientes, ele devolve uma lista de clientes que possui aquele nome.
Para criar a nossa query usamos o método createQuery()
do nosso EntityManager e nessa query "selecionamos" todos os clientes que possuem no seu nome o valor da String nome passada no parâmetro do método.
No método setParamater()
passamos primeiro a String que representa nossa variavel na query e o valor que ela tem. Os "%" antes e depois da variavel nome são para falar que não importa a posição, se for achado o valor da variavel nome dentro do nome do cliente, esse cliente vai ser retornado.
E o getResultList()
é para devolver a lista.
Faz sentido Andrei? Bons estudos!