[RESOLVIDO]CriteriaSpecification.DISTINCT_ROOT_ENTITY , Aonde eu coloco os campos do Distinct

1 resposta
E

Pessoal,

fiz a seguinte rotina,a abaixo, e a minha estrutura da minha tabela é o seguinte :
id Grupo metodo_id valor
1 5 5278 900.00
2 5 5278 900.00
3 5 5278 900.00
4 5 5278 900.00
5 5 1601 900.00

e o resultado que gostaria seria agrupar por GRUPO e PRECO por exemplo, mas o criteria abaixo , estao mostrando todos os registros sem agrupamento .

EntityManagerFactory factory= Persistence.createEntityManagerFactory("testandoJPA");
    	   	   EntityManager manager= factory.createEntityManager();
    	   		
 	    	   Session session = (Session) manager.getDelegate();  
 	    	   Criteria criteria = session.createCriteria(PrecoPorMetodo.class) 
 	    	   
 	    	   
 	    			 .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
 	    			 .addOrder(Order.asc("id"));

 	    			  
 	    			 List<PrecoPorMetodo> users = criteria.list();
 	    			 for (PrecoPorMetodo u : users) {
 	    			          System.out.println("User = " + u.getGrupo());
 	    			 }

1 Resposta

E

Resolvi dessa forma

EntityManagerFactory factory= Persistence.createEntityManagerFactory("testandoJPA");
    	   	   EntityManager manager= factory.createEntityManager();
    	   	   
    	   		
 	    	   Session session = (Session) manager.getDelegate();  
 	    	   Criteria criteria = session.createCriteria(PrecoPorMetodo.class);	    	   


                	      ProjectionList projectionList = Projections.projectionList();
 	    	              projectionList.add(Projections.property("grupo"));
 	    	              projectionList.add(Projections.property("preco"));
 	    	              criteria.setProjection(Projections.distinct(projectionList));
 	     	    	      Long teste1 = (long) 4435; 
    	 	    	      criteria.add(Restrictions.eq("metodoId", (teste1))); 	    	        

     	    	          List lista = criteria.list();
Criado 5 de novembro de 2012
Ultima resposta 5 de nov. de 2012
Respostas 1
Participantes 1