Criteria

Disponível somente no TrabalhosFeitos
  • Páginas : 8 (1820 palavras )
  • Download(s) : 0
  • Publicado : 29 de novembro de 2012
Ler documento completo
Amostra do texto
Capítulo 16. Consultas por critérios

Página 1 de 7

Anterior

Próxima

Capítulo 16. Consultas por critérios
16.1. Criando uma instância Criteria 16.2. Limitando o conjunto de resultados 16.3. Ordenando resultados 16.4. Associações 16.5. Busca de associação dinâmica 16.6. Exemplos de consultas 16.7. Projeções, agregações e agrupamento. 16.8. Consultas e subconsultas desanexadas. 16.9.Consultas por um identificador natural O Hibernate provê uma API de consulta por critério intuitiva e extensível.

16.1. Criando uma instância Criteria
A interface org.hibernate.Criteria representa a consulta ao invés de uma classe persistente particular. A sessão é uma fábrica para instâncias de Criteria .
Criteria crit = sess.createCriteria(Cat.class); crit.setMaxResults(50); List cats =crit.list();

16.2. Limitando o conjunto de resultados
Um critério individual de consulta é uma instância da interface org.hibernate.criterion.Criterion. A classe org.hibernate.criterion.Restrictions define os métodos da fábrica para obter certos tipos de
Criterion pré fabricados. List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .add(Restrictions.between("weight", minWeight, maxWeight) ) .list();

Restrições podem ser logicamente agrupadas.
List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "Fritz%") ) .add( Restrictions.or( Restrictions.eq( "age", new Integer(0) ), Restrictions.isNull("age")

http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/querycriteria.html

13/11/2012

Capítulo 16. Consultaspor critérios

Página 2 de 7

) ) .list();

List cats = sess.createCriteria(Cat.class) .add( Restrictions.in( "name", new String[] { "Fritz", "Izi", "Pk" } ) ) .add( Restrictions.disjunction() .add( Restrictions.isNull("age") ) .add( Restrictions.eq("age", new Integer(0) ) ) .add( Restrictions.eq("age", new Integer(1) ) ) .add( Restrictions.eq("age", new Integer(2) ) ) ) ) .list();

Existeum grande número de critérios pré-fabricados (subclasses de Restrictions). Um dos mais úteis permite especificar o SQL diretamente.
List cats = sess.createCriteria(Cat.class) .add( Restrictions.sqlRestriction("lower({alias}.name) like lower(?)", "Fritz%", Hiberna .list();

O parâmetro {alias} será substituido pelo alias da entidade procurada. Uma maneira alternativa de obter um critério éapartir de uma instância Property. Você pode criar uma Property chamando Property.forName():

Property age = Property.forName("age"); List cats = sess.createCriteria(Cat.class) .add( Restrictions.disjunction() .add( age.isNull() ) .add( age.eq( new Integer(0) ) ) .add( age.eq( new Integer(1) ) ) .add( age.eq( new Integer(2) ) ) ) ) .add( Property.forName("name").in( new String[] { "Fritz","Izi", "Pk" } ) ) .list();

16.3. Ordenando resultados
Você poderá ordenar os resultados usando org.hibernate.criterion.Order.
List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") .addOrder( Order.asc("name") ) .addOrder( Order.desc("age") ) .setMaxResults(50) .list();

List cats = sess.createCriteria(Cat.class) .add( Property.forName("name").like("F%") ) .addOrder(Property.forName("name").asc() ) .addOrder( Property.forName("age").desc() ) .setMaxResults(50) .list();

http://docs.jboss.org/hibernate/core/3.5/reference/pt-BR/html/querycriteria.html

13/11/2012

Capítulo 16. Consultas por critérios

Página 3 de 7

16.4. Associações
Através da navegação de associações usando createCriteria(), você pode especificar restrições por entidadesrelacionadas:
List cats = sess.createCriteria(Cat.class) .add( Restrictions.like("name", "F%") ) .createCriteria("kittens") .add( Restrictions.like("name", "F%") ) .list();

Note que o segundo createCriteria() retorna uma nova instância de Criteria, que refere aos elementos da coleção kittens. A seguinte forma alternada é útil em certas circunstâncias:
List cats = sess.createCriteria(Cat.class)...
tracking img