Questão nº 23
Questão de Tecnologia da Informação · FCC TRE-PR 2017 (nº 23)
A API Criteria permite realizar consultas programadas em aplicações Java. Considere a consulta abaixo.
```
Criteria crit = session.createCriteria(Candidato.class);
crit.add( I ("numeroVotos",new Double(1000.0)));
crit.add( II ("nome","Mar%"));
List results = crit.list();
```
Para pesquisar candidatos com número de votos maior que 1000 e que tenham nome começado por Mar, as lacunas I e II devem ser preenchidas, correta e respectivamente, por:
- ASubqueries.gt e Subqueries.like.
- BFetchMode.gt e FetchMode.like.
- CProjections.gt e Projections.ilike.
- DRestrictions.gt e Restrictions.like. (alternativa correta)
- ESearch.gt e Search.like.
Resposta comentada
Gabarito Alternativa D
A API Criteria do Hibernate permite construir consultas de banco de dados de forma programática usando objetos Java, em vez de escrever SQL diretamente. Para adicionar condições de filtro (restrições) que limitam os resultados da consulta, usamos a classe Restrictions.
- (A) Incorreta:
Subqueriesé usado para construir subconsultas dentro da consulta principal, não para aplicar condições de filtro diretas como "maior que" ou "começa com". - (B) Incorreta:
FetchModeé utilizado para definir como as associações (relacionamentos entre entidades) devem ser carregadas, como por exemplo, se devem ser carregadas ansiosamente (JOIN) ou preguiçosamente. Não tem relação com a aplicação de filtros nos dados. - (C) Incorreta:
Projectionsé usado para especificar quais colunas ou agregações (comoCOUNT,SUM,MAX) devem ser retornadas pela consulta, ou para agrupar resultados. Ele define o "SELECT" da consulta, não o "WHERE". A armadilha aqui é queilikeé um tipo delike(case-insensitive), mas a classeProjectionsnão é a correta para aplicar filtros. - (D) Correta:
Restrictionsé a classe da API Criteria especificamente projetada para adicionar condições de filtro (cláusulasWHERE) à consulta.Restrictions.gtsignifica "greater than" (maior que), eRestrictions.likeé usado para correspondência de padrões de string (como "começa com", usando o caractere%). Essas são as funções exatas necessárias para as condições dadas. - (E) Incorreta: Não existe uma classe
Searchpadrão na API Criteria do Hibernate para essa finalidade. Os métodosgtelikepertencem à classeRestrictions.
Fonte: FCC TRE-PR 2017 Técnico Judiciário - Área Apoio Especializado - Especialidade Programação de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.