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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

119 CRITERIA1 @Generated ( value = " org . hibernate . jpamodelgen . JPAMetaModelEntityProcessor ")2 @StaticMetamodel ( Livro . class )3 public abstract class Livro_ {4 public static volatile SingularAttribute id;5 public static volatile SingularAttribute preco ;6 public static volatile SingularAttribute nome ;7 }Código Java 5.73: Livro_.javaA classe Livro_ foi gerada automaticamente pelo <strong>Hibernate</strong> a partir da classe Livro. Ela segueas regras do Canonical Metamodel definidas pela especificação JPA 2.O próximo passo é utilizar o Canonical Metamodel da entidade Livro para definir a consultaanterior. Veja o código abaixo.1 public class CalculaMedia {2 public static void main ( String [] args ) {3 EntityManagerFactory factory = Persistence4 . createEntityManagerFactory (" K21_entity_manager ");5 EntityManager manager = factory . createEntityManager ();67 CriteriaBuilder cb = manager . getCriteriaBuilder ();8 CriteriaQuery < Double > c = cb. createQuery ( Double . class );9 Root l = c. from ( Livro . class );10 c. select (cb.max (l. get ( Livro_ . preco )));1112 TypedQuery < Double > query = manager . createQuery (c);13 Double maiorPreco = query . getSingleResult ();1415 System . out . println (" Maior preço : " + maiorPreco );1617 manager . close ();18 factory . close ();19 }20 }Código Java 5.74: CalculaMedia.javaUma vez que utilizamos o Canonical Metamodel (Livro_) da entidade Livro, não é possível parametrizara consulta <strong>com</strong> outro tipo a não ser o Double, pois um erro de <strong>com</strong>pilação ocorrerá. Alémdisso, também não podemos mais <strong>com</strong>eter o erro relacionado ao nome do atributo da entidade, semque haja uma falha na <strong>com</strong>pilação.Exercícios de Fixação14 Copie a pasta <strong>Hibernate</strong>-Metamodel-Generator localizada na Área de Trabalho dentro do diretórioK19-Arquivos para a pasta raiz do projeto K19-Criteria. Em seguida, clique <strong>com</strong> o botão direitodo mouse sobre o projeto K19-Criteria, selecione a opção “Properties” e configure o <strong>Hibernate</strong> MetamodelGenerator de acordo <strong>com</strong> as figuras abaixo.www.k19.<strong>com</strong>.br 119

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

Saved successfully!

Ooh no, something went wrong!