Distinct com JPA

Gostaria de saber como eu faço para que o distinct funcione …
Pois eu tenho o cod

Query dynaQuery = getConexao().createQuery("select distinct u FROM Usuario u order by u.vara"); return dynaQuery.getResultList();
Quando coloco Query dynaQuery = getConexao().createQuery("select distinct u.vara FROM Usuario u order by u.vara"); return dynaQuery.getResultList();
Não funciona… Alguem sabe alguma solução ?

Esse cod é um hql …

Bom, tu ta usando Hibernate certo?? Tenta assim:

getConexao().createCriteria(Usuario.class).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).addOrder(Order.asc("vara")).list()

Sim …

Deu certo ae?

Gus …
Não rodou … pois o netbeans não me da a opção de criar a criteria …
Vale lembrar que eu utilizo JPA que é um framework que roda em cima do hibernate …

Bom, não é ao contrário? O Hibernate é um framework que implementa a especificação JPA.

Não manjo de JPA, gostaria muito de utilizar mais o JPA “purão” mesmo, mas as facilidades do Hibernate são atraentes…

Tentou o select com GROUP BY ? Especificando os campos corretamente é a mesma coisa do distinct…

Qualquer coisa dá uma olhada na especificação do JPA http://download.oracle.com/otndocs/jcp/persistence-2.0-fr-eval-oth-JSpec/

Sorry gus … eu sou meio cabeçudo de mais …
Tô ainda procurando esse detalhe …

Caçando aqui, achei esse site tbm:

http://www.objectdb.com/java/jpa/query/jpql/select

Procura essa parte na página:

[quote]SELECT in Criteria Queries
The criteria query API provides several ways for setting the SELECT clause.

Single Selection
Setting a single expression SELECT clause is straightforward.

For example, the following JPQL query:

SELECT DISTINCT c.currency FROM Country c
can be built as a criteria query as follows:

CriteriaQuery q = cb.createQuery(Country.class);
Root c = q.from(Country.class);
q.select(c.get(“currency”)).distinct(true);[/quote]

Em relação ao que te disse do group by… é mais ou menos assim:
um SELECT DISTINCT codigo FROM cliente é a mesma coisa que SELECT codigo FROM cliente GROUP BY codigo
Existem casos em que não dá pra usar o distinct, ou que é melhor usar o Group By (é isso mesmo kk)

Dá uma olhada nesse link e se der certo posta ae.

Gus resolvi sem utilizar criteria …

select DISTINCT(u.vara) FROM Usuario u  order by u.vara

Passei por essa necessidade. Mas usando dessa forma:

select DISTINCT(u.vara) FROM Usuario u  order by u.vara

Ele vai trazer somente o objeto que representa a coluna ‘vara’ e não sua entidade, não esqueça disso.

nel … mas é exatamente isso que eu necessito no momento …
Valeu a ajuda gus …
Valeu nel …