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.

115 CRITERIA1. Suponha que seja necessário selecionar os livros mais baratos. Em outras palavras, devemosselecionar os livros tais que não exista nenhum outro livro <strong>com</strong> preço menor.1 CriteriaQuery c = cb. createQuery ( Livro . class );2 Root livro1 = c. from ( Livro . class );3 c. select ( livro1 );45 Subquery subquery = c. subquery ( Livro . class );6 Root livro2 = subquery . from ( Livro . class );7 subquery . select ( livro2 );8 Predicate gt = cb.gt( livro1 .< Double > get (" preco "), livro2 .< Double > get (" preco "));9 subquery . where (gt);1011 Predicate notExists = cb.not (cb. exists ( subquery ));12 c. where ( notExists );Código Java 5.63: Selecionando os livros mais baratos2. Suponha que seja necessário selecionar os livros mais baratos de um determinado autor.1 CriteriaQuery c = cb. createQuery ( Livro . class );2 Root livro1 = c. from ( Livro . class );3 Root autor1 = c. from ( Autor . class );4 c. select ( livro1 );56 Subquery subquery = c. subquery ( Livro . class );7 Root livro2 = subquery . from ( Livro . class );8 Root autor2 = subquery . from ( Autor . class );9 subquery . select ( livro2 );10 Predicate isMember1 = cb. isMember ( livro2 , autor2 .< Collection > get (" livros "));11 Predicate equal1 = cb. equal ( autor2 , autor1 );12 Predicate gt = cb.gt( livro1 .< Double > get (" preco "), livro2 .< Double > get (" preco "));13 Predicate predicate = cb.and ( isMember1 , equal1 ,gt);14 subquery . where ( predicate );1516 Predicate notExists = cb.not (cb. exists ( subquery ));17 Predicate equal2 = cb. equal ( autor1 .< String > get (" nome "), " Jack Trout ");18 Predicate isMember2 = cb. isMember ( livro1 , autor1 .< Collection > get (" livros "));19 Predicate predicate2 = cb.and ( isMember2 , equal2 , notExists );20 c. where ( predicate2 );Código Java 5.64: Selecionando os livros mais barato do autor Jack Trout3. Suponha que seja necessário listar os livros em ordem decrescente em relação aos preços.1 CriteriaQuery c = cb. createQuery ( Livro . class );2 Root livro = c. from ( Livro . class );3 c. select ( livro );4 c. orderBy (cb. desc ( livro .< Double > get (" preco ")));Código Java 5.65: Ordenando o resultado da consulta por ordem decrescente de preço4. Suponha que seja necessário selecionar os autores <strong>com</strong> mais livros.1 CriteriaQuery c = cb. createQuery ( Autor . class );2 Root autor1 = c. from ( Autor . class );3 c. select ( autor1 );45 Subquery subquery = c. subquery ( Autor . class );6 Root autor2 = subquery . from ( Autor . class );7 subquery . select ( autor2 );8 Predicate gt = cb.gt(cb. size ( autor2 .< Collection > get (" livros ")), cb. size ( autor1 . get (" livros ")));9 subquery . where (gt);10www.k19.<strong>com</strong>.br 115

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

Saved successfully!

Ooh no, something went wrong!