Oi Luciano! Bom dia!
Existem diversas maneiras.
1) JPQL
Essa abordagem permite buscar tarefas passando parametros de pesquisa por HQL/JPQL.
package br.com.caelum.tarefas.jpa;
import javax.persistence.Query;
// outros imports omitidos
public class BuscaTarefas {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.
createEntityManagerFactory("tarefas");
EntityManager manager = factory.createEntityManager();
//cuidado, use o import javax.persistence.Query
Query query = manager
.createQuery("select t from Tarefa as t "+
"where t.finalizado = :paramFinalizado");
query.setParameter("paramFinalizado", true);
List<Tarefa> lista = query.getResultList();
for (Tarefa t : lista) {
System.out.println(t.getDescricao());
}
manager.close();
}
}
2) Example
No cenário abaixo ele vai buscar os restaurantes com o nome Pico, no endereço Vergueiro que sirvam comida contemporânea.
// Objeto restaurante populado, mas poderia vir direto do request pelo seu
// framework MVC
Restaurante restaurante = new Restaurante();
restaurante.setNome("Pico");
restaurante.setEndereco("Vergueiro");
TipoDeComida tipo = new TipoDeComida();
tipo.setNome("Contemporânea");
restaurante.setTipoDeComida(tipo);
// Query sendo feita
Example example = Example.create(restaurante);
List<Restaurante> restaurantes = s.createCriteria(Restaurante.class)
.add(example).list();
Espero ter ajudado,
Abraço e sucesso,
Rodrigo