Pessoal, montei a seguinte rotina ,
EntityManagerFactory factory= Persistence.createEntityManagerFactory("testandoJPA");
EntityManager manager= factory.createEntityManager();
CriteriaBuilder cb= manager.getCriteriaBuilder();
TypedQuery<String> query = manager.createQuery("select distinct livro.nome from Livro livro", String.class);
List<String> nomes = query.getResultList();
for(String nome : nomes) {
System.out.println(nome);
}
Gostaria de colocar mais um campo no meu select distinct livro.nome, livro.preco from Livro livro
Alguem poderia me ajudar ???
Novamente te indico o mesmo link: JPA Consultas e Dicas
Leia, ele mostra como fazer…
SOLUÇÃO
EntityManagerFactory factory= Persistence.createEntityManagerFactory("testandoJPA");
EntityManager manager= factory.createEntityManager();
CriteriaBuilder cb= manager.getCriteriaBuilder();
CriteriaQuery<Tuple> c = cb.createQuery(Tuple.class);
Root<Livro> l = c.from(Livro.class);
c.multiselect(l.<String>get("nome").alias("livro.nome"),l.<Double>get("preco").alias("livro.preco"));
c.distinct(true);
TypedQuery<Tuple> query = manager.createQuery(c);
List<Tuple> resultado = query.getResultList();
for (Tuple registro : resultado) {
System.out.println("Livro: "+registro.get("livro.nome"));
System.out.println("Preco: "+registro.get("livro.preco"));
}