Select distinct HQL Hibernate

Pessoal eu tenho uma tabela Entidade Email e nela tenho um Produto com relacionamento @ManyToOne
No banco na minha tabela Email tenho varios Emails com codigos dos Produtos alguns repetidos, porém preciso trazer os emails com distinct dos codigos dos produtos

Tentei fazer de varias formas mas ta vindo todos emails:

Select distinct e from Email e 
Select distinct e from Email e join e.produto prod

Alguem sabe como faço?

Como o hibernate vai saber que o distinct e pelo cdProduto?

Isto deve ajudar

Level 30 segundos procurando no google por hibernate + distinct

Select distinct e.produto.idProduto from Email e

[quote=drsmachado]Isto deve ajudar

Level 30 segundos procurando no google por hibernate + distinct[/quote]

E qual a diferença do codigo q eu mandei pra esse que vc me mandou?

Dessa forma vai me trazer so os ids dos produtos eu preciso do Objeto email

evertonsilvagomesjava tudo bem

voce conseguiu resolver o seu problema?

to com o msm problema tb

pessoal, consegui fazer da seguinte forma :

    	   		
	    		CriteriaBuilder cb= manager.getCriteriaBuilder();
	    		CriteriaQuery<Tuple> c1 = cb.createQuery(Tuple.class);
	    		Root<PrecoPorMetodo> l1 = c1.from(PrecoPorMetodo.class);
	    		c1.multiselect(l1.<Integer>get("grupo").alias("PrecoPorMetodo.grupo"),l1.<Double>get("preco").alias("PrecoPorMetodo.preco"));
	    		
	    		c1.distinct(true);
	    		
	    		Predicate predicate = cb.equal(l1.get("metodoId"),1498);
	    		c1.where(predicate);
	    				
	    		TypedQuery<Tuple> query1 = manager.createQuery(c1);
	    		List<Tuple> resultado1 = query1.getResultList();
	    		
	    		for (Tuple registro1 : resultado1) {
	    			
	    			int teste =  (Integer) registro1.get("PrecoPorMetodo.grupo");
	    			long teste1 = teste;
	    			
	    			BigDecimal vpreco =  (BigDecimal) registro1.get("PrecoPorMetodo.preco");
	    			
	    			System.out.println(teste1);

	    			
	    			System.out.println("teste de conversao "+teste1);
	    			System.out.println("preco de conversao "+vpreco);
	    			
	    			System.out.println("grupo: "+registro1.get("PrecoPorMetodo.grupo"));
	    			System.out.println("Preco: "+registro1.get("PrecoPorMetodo.preco"));
	    		}		

No meu caso tenho algo do tipo:

	StringBuffer sql = null;
		
	sql = new StringBuffer();
		
	sql.append("		SELECT 		distinct p					");
	sql.append("		FROM 								");
	sql.append("			Pessoa p      	    				        ");

e estou tomando o seguinte erro

ORA-01791: não é uma expressão de SELECT

mas a query me parece estar certa :cry:

Carolino,

Mas se tiver uma coluna ID(que seria valor unico) ira trazer todos os dados da sua tabela, mesmo utilizando o distinct certo ??