Dúvida criteria JPA

3 respostas
Z

Galera, tenho uma dúvida simples.
Tenho uma tabela de produto, e nela tem o campo que armazena o id do Grupo que pertence esse produto. Estou tentando criar um método que me retorne todos os produtos de um determinado grupo.

Dei uma procurada no fórum e na deep web e meio que montei um código “frankenstein” hahahha, mas não consegui fazer ele retornar os produtos.
Gostaria de saber como devo fazer isso, e se o código que fiz está certo.

public List<Produto> findByGrupo (int idGrupoProduto) { em = emf.createEntityManager(); em.getTransaction().begin(); CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery cq = cb.createQuery(Produto.class); Root<Produto> root = cq.from(Produto.class); Predicate byGrupoProduto = cb.equal(root.get("idGrupoProduto"), idGrupoProduto); cq.where(byGrupoProduto); return em.createQuery(cq).getResultList(); }

Agradeço desde já por qualquer ajuda!

3 Respostas

A

Alguém?
também preciso

N

Cara… voce pode fazer uma junção dessas classes e fazer uma consulta pelo id do Grupo e retornar todos os produtos daquele grupo

vou postar um exemplo ve se te ajuda

public ArrayList<GrupoProduto> buscarPorGrupo(Integer codigoGrupo) throws ConsultarException, Exception{
		Session s = getSessaoAberta();
		try{
			Criteria c = s.createCriteria(GrupoProduto.class);			
                        //onde idGrupo, é o id da classe grupo e grupo seria com que vc faz a ligação com produto
			c.createAlias("grupo", "idGrupo", Criteria.INNER_JOIN);
                        //onde o idGrupo é igual com o parametro que no caso vai ser digitado pelo usuário
			c.add(Restrictions.eq("idGrupo", codigoGrupo));								
			return (ArrayList<GrupoProduto>) c.list();
		}catch (Exception e) {
			throw e;
		}finally{
			s.close();
		}
	}

espero que ajude…

Z

Amigo, obrigado pela ajuda!
Eu até tentei por namedquery e não consegui, postei até outra dúvida.

Vou tentar do jeito que você falou, qualquer coisa volto aqui.
Obrigado pela ajuda!!

Criado 26 de outubro de 2012
Ultima resposta 28 de out. de 2012
Respostas 3
Participantes 3