[Resolvido]Distinct com hibernate

2 respostas
malokas

Como faço para fazer uma pesquisa com criteria com a clausula distinct onde meu resultado será uma lista de objetos?
Tentei fazer mas não retornava os objetos e sim a quantidade de objetos.
Usei Projections.distinct.

Session session = (Session) em.getDelegate();
Criteria criteria = session.createCriteria(GrupoPoder.class);
		
criteria.setFirstResult(frstRes);
criteria.setMaxResults(maxRes);
criteria.setProjection(Projections.projectionList().
add(Projections.distinct(Projections.property("id"))));
		
criteria.createCriteria("poderes", "poder").add(Expression.like("chave", chave+"%").ignoreCase());

Eu preciso que a consulta acima retorne uma lista de objetos GrupoPoder.

2 Respostas

romarcio

Tentou assim:

Session session = (Session) em.getDelegate();
Criteria criteria = session.createCriteria(GrupoPoder.class);
		
criteria.setFirstResult(frstRes);
criteria.setMaxResults(maxRes);
criteria.setProjection( Projections.distinct( Projections.property( "id" ) ) );		
criteria.createCriteria("poderes", "poder").add(Expression.like("chave", chave+"%").ignoreCase());
malokas

Foi resolvido da seguinte forma.

Session session = (Session) em.getDelegate();
		Criteria criteria = session.createCriteria(GrupoPoder.class);
		criteria.createCriteria("poderes", "poder").add(Expression.like("chave", chave+"%").ignoreCase());
		criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
		criteria.setFirstResult(frstRes);
		criteria.setMaxResults(maxRes);
		return criteria.list();
Criado 25 de agosto de 2010
Ultima resposta 26 de ago. de 2010
Respostas 2
Participantes 2