Hibernate + Criteria + Example

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

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

Tente assim:

[code]
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();[/code]

Criteria c = secao.createCriteria(ProducaoApontamento.class);
c.createCriteria("apontamento").createCriteria("centroCusto").add(Restrictions.eq("teste",15));

ai funciona tranquilo

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;
}

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;
}