11.07.2015 Views

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

Persistência com JPA2 e Hibernate - Inpi

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

CRITERIA 106avg()count()max() e greatest()min() e least()sum(), sumAsLong() e sumAsDouble()Calcula a média de um conjunto de númerosContabiliza o número de resultadosRecupera o maior elemento um conjunto de númerosRecupera o menor elemento um conjunto de númerosCalcula a soma de um conjunto de númerosTabela 5.1: Funções de agregação.Valores ÚnicosAlgumas consultas possuem <strong>com</strong>o resultado valores únicos. Por exemplo, suponha que queremosobter a média dos preços dos livros cadastrados no banco de dados ou a quantidade de livrosde uma determinada editora. Nesse tipo de consulta, devemos apenas trazer do banco de dados umvalor único calculado no próprio banco.1 CriteriaQuery < Double > c = cb. createQuery ( Double . class );2 Root l = c. from ( Livro . class );3 c. select (cb.avg (l.< Double > get (" preco ")));Código Java 5.13: Obtendo a média dos preços dos livrosA consulta acima devolve a média dos preços dos livros cadastrados no banco de dados. Nessaconsulta, foi utilizada uma função de agregação. Veja a lista dessas funções:Resultados EspeciasPodemos selecionar múltiplos atributos de uma entidade em uma consulta em Criteria. Porexemplo, podemos montar uma listagem <strong>com</strong> os nomes e preços dos livros cadastrados no bancode dados. Para selecionar múltiplos atributos, devemos utilizar o método multiselect().1 CriteriaQuery < Object []> c = cb. createQuery ( Object []. class );2 Root l = c. from ( Livro . class );3 c. multiselect (l.< String > get (" nome "), l.< Double > get (" preco "));Código Java 5.14: Selecionando os nomes e os preços dos livrosO resultado da consulta acima é uma lista de array de Object. Para manipular esse resultado,temos que utilizar a posição dos dados dos arrays da lista.1 TypedQuery < Object []> query = manager . createQuery (c);2 List < Object []> resultado = query . getResultList ();34 for ( Object [] registro : resultado ) {5 System . out . println (" Livro : " + registro [0]) ;6 System . out . println (" Preço : " + registro [1]) ;7 }Código Java 5.15: Manipulando os resultados da consultaTambém podemos utilizar a interface Tuple para não trabalhar <strong>com</strong> posicionamento de dadosem arrays. Nessa abordagem, devemos aplicar “apelidos” para os itens selecionados através do métodoalias().106 www.k19.<strong>com</strong>.br

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!