terça-feira, 16 de outubro de 2012

Consulta HQL

Alguns métodos da API br.com.jbc.controller.Controller possibilitam a realização de consulta HQL, como podem ser vistos nos exemplos abaixo:

Instância da API Controller para realizar consultas usando a entidade Pessoa

Controller<Pessoa> service = new Controller<Pessoa>();

Busca simples com condição HQL. Será impresso na console a pessoa com id 11

List<Pessoa> lista = service.getListByHQLCondition("from Pessoa where id = 11");

for (Pessoa pessoa : lista) {
  System.out.println(pessoa.toString());
}
Assinatura do método:
java.util.List<T> getListByHQLCondition(java.lang.String condition)


Busca HQL com passagem de parâmetros. Será impresso na console as pessoas com id 11, 12 e 13

List<Long> ids = new ArrayList<Long>();
ids.add(new Long(11));
ids.add(new Long(12));
ids.add(new Long(13));
     
List<Pessoa> lista2 = 
       service.getListByHQLCondition("from Pessoa where id in (:paramIds)", ids, "paramIds");

for (Pessoa pessoa : lista2) {
    System.out.println(pessoa.toString());
}
Assinatura do método:
java.util.List<T> getListByHQLCondition(java.lang.String condition, java.util.List paramList, java.lang.String paramListName)



Busca HQL paginada. Será impresso as 4 pessoas com id maior que zero ordenado por id

List<Pessoa> lista3 = 
       service.getListByHQLCondition("from Pessoa where id > 0 order by id",0, 3);

for (Pessoa pessoa : lista3) {
    System.out.println(pessoa.toString());
}
Assinatura do método:
java.util.List<T> getListByHQLCondition(java.lang.String condition, int firstResult, int maxResult)


Busca HQL paginada com passagem de parâmetros. Será impresso as pessoas com id 11 e 12, pois nos parâmetros de paginação esta buscando os usuários da lista entre o valor 0 e 1.

List<Long> param = new ArrayList<Long>();
param.add(new Long(11));
param.add(new Long(12));
param.add(new Long(13));
List<Pessoa> lista4 = 
         service.getListByHQLCondition("from Pessoa where id in (:ids)", param, "ids", 0 , 1);

for (Pessoa pessoa : lista4) {
    System.out.println(pessoa.toString());
}
Assinatura do método:
java.util.List<T> getListByHQLCondition(java.lang.String condition, java.util.List paramList, java.lang.String paramListName, int firstResult, int maxResult)


Código que efetua uma busca HQL que retorna a entidade Pessoa. Será impresso o nome da pessoa

Pessoa p = service.getObjectByHQLCondition("from Pessoa where id = 11");
System.out.println(p.getNome());
Assinatura do método:
T getObjectByHQLCondition(java.lang.String condition)


Código retorna um valor qualquer relacionado a classe pessoa, neste caso irá imprimir o nome da cidade

Cidade c = (Cidade) 
          service.getValueByHQLCondition("select p.cidade from Pessoa p where p.id = 11");

System.out.println(c.getNmCidade());
Assinatura do método:
 java.lang.Object getValueByHQLCondition(java.lang.String condition)

 
Código imprime o email da pessoa.

String email = (String) 
            service.getValueByHQLCondition("select p.email from Pessoa p where p.id = 11");

       System.out.println(email);
Assinatura do método:
 java.lang.Object getValueByHQLCondition(java.lang.String condition)



Lembrando que estes são exemplos de como fazer consultas HQL com a API br.com.jbc.controller.Controller, mas para fazer uma consulta simples podemos utilizar o método find

Código que busca a pessoa com o id 1 e imprime o nome

Pessoa p = new Pessoa();
p.setId(1);

p = service.find(p);
System.out.println(p.getNome());
Assinatura do método:
T find(T filter)

Como também o findList que retorna uma lista e findPaginate que efetua uma pesquisa paginada

Para ver mais detalhes, acesse a documentação da API