Hibernate + Criteria + Example

5 respostas
M

Colegas,

Como eu faço para buscar todos os Apontamentos cujo centroCusto tenha o atributo teste = 15 (Vide classes abaixo) ?

Tentei fazer assim, mas o hibernate ignora o meu Example:

Apontamento apontamento = new Apontamento();
CentroCusto centroCusto = new CentroCusto();
			centroCusto.setTeste(new Integer(15));
			
			apontamento.setCentroCusto(centroCusto);
						
			Criteria c = secao.createCriteria(ProducaoApontamento.class);
			c.add(Example.create(apontamento));
			aList  = c.list();				
			System.out.println("Qtos objetos:  " +aList.size());  //====> Aki ele traz todos os registros do banco. O bicho ignora o meu Example
public class Apontamento {
	
	private Long idApontamento;
	private CentroCusto centroCusto;
	private BigDecimal realizado;
        
        // getters and setters
}
public class CentroCusto{
	
	private Long idCentroCusto;
	private Integer teste;
	        
        // getters and setters
}

Muito obrigado,

José Marques

5 Respostas

A

Marques,

Com a minha pouco experiencia com hibernate posso tentar te ajudar. Primeiro eu usaria um List para fazer a consulta, ja que seram alguns resultados !
Faria algo assim

List result = (List) session.createQuery("FROM Comentario c").list();

E nesse caso eu nao usaria o criteria e sim o Query para passar alguns paramentros na minha pesquisa !

Agora ja que vc quer passar um parametro, vc tem alguns formas, vou te exemplificar uma delas abaixo

List result = (List) session.createQuery("FROM Comentario c WHERE c.id = :id")
				.setParameter("id", bean.getId()).list();

Com isso eu pego o id e faco a pesquisa e ai vc adapta ao que vc realmente quer !

Espero ter ajuda

Abs

M

Tente assim:

Apontamento apontamento = new ProducaoApontamento();
CentroCusto centroCusto = new CentroCusto();
centroCusto.setTeste(new Integer(15));
			
apontamento.setCentroCusto(centroCusto);
						
List lista = secao.createCriteria(ProducaoApontamento.class).add( Example.create(apontamento) ).list();
L
Criteria c = secao.createCriteria(ProducaoApontamento.class);
c.createCriteria("apontamento").createCriteria("centroCusto").add(Restrictions.eq("teste",15));

ai funciona tranquilo

V

Caro amigo asdhfsd87623;

Gostaria de sua ajuda em um exemplo bem parecido com o que o amigo lhe descreveu neste tópico acima, preciso realizar uma consulta onde terei como parametros a regiao do pedido feito(isto está na sessão), com a regiao do cidadão logado no sistema.

Tens alguma sgestão?

Abaixo segue exemplo do meu DAO.

Obrigado

public List getLista(String mat, String id_regiao) throws SQLException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

List ListaPed;

String hql = select * from pedido where id_regiao=:id_regiao and mat=:mat;

//String hql = “select * from pedido where id_regiao=? and mat=?”;

Query q = session.createQuery(hql);

q.setParameter(id_regiao, id_regiao);

q.setParameter(mat, mat);

ListaPed = q.list();

session.getTransaction().commit();

return ListaPed;

}
V

Caro amigo asdhfsd87623;

Gostaria de sua ajuda em um exemplo bem parecido com o que o amigo lhe descreveu neste tópico acima, preciso realizar uma consulta onde terei como parametros a regiao do pedido feito(isto está na sessão), com a regiao do cidadão logado no sistema.

Tens alguma sgestão?

Abaixo segue exemplo do meu DAO.

Obrigado

public List getLista(String mat, String id_regiao) throws SQLException {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

session.beginTransaction();

List ListaPed;

String hql = select * from pedido where id_regiao=:id_regiao and mat=:mat;

//String hql = “select * from pedido where id_regiao=? and mat=?”;

Query q = session.createQuery(hql);

q.setParameter(id_regiao, id_regiao);

q.setParameter(mat, mat);

ListaPed = q.list();

session.getTransaction().commit();

return ListaPed;

}
Criado 15 de fevereiro de 2008
Ultima resposta 19 de mai. de 2010
Respostas 5
Participantes 5