ObjectQuery e Builder.... Não sei c é bem ObjectQuery, gostaria de ajuda

Opa pessoal… to montando um objeto com padrão builder, pra funcionar como Query, pra montar facil consultas e num ficar criando SQL atoa…

Gostaria de opinião de vcs, não sei c to reiventando a roda auhahuahu … ^^

É bem facil de criar um objeto desse pra funcionar como criador de consultas pra uma entidade… segue o exemplo

[code]import modelo.persistencia.queryobject.*;
//Pais = a uma entity … e o segundo argumento é sempre o proprio objeto que estou criando.
public class PaisWhere extends Where<Pais, PaisWhere> {

public PaisWhere() {
	//tem que definir o construtor assim, para que o objeto abstrato saiba qual é a entidade.
	super(Pais.class);
}
//Pais tem o campos "nome" que é uma string
public QueryStringArgument<Pais, PaisWhere> _nome() {
	return createStringColumn("nome");
}
//Pais tem o campos "id" que é um Numero
public QueryNumericArgument<Pais, PaisWhere> _id() {
	return createNumberColumn("id");
}

}[/code]

1° lugar, não estranhem o nome do método iniciando por "_" é apenas uma forma de filtrar os métodos

depois disso criar um SQL é muito simples

[code]Builder query = new
PaisWhere() //neste parte as unicas opções são os métodos _nome() e _id()
._nome() //agora as únicas opções são _like(String), _startLike(String), _equals(String), entre outros…
._startLike(“B”) //agora as unicas opções são _or(), _and() e _build()
._or() //aqui volta para o incio, as opções são _nome() e _id()
._id() //aqui as opções são _equals(Number), _greater(Number), _equalsOrGreater(Number), entre outros…
._greater(10) //aqui as opções voltam a ser _or(), and() e _build()
._build(); //aqui o objeto é construido

System.out.println(query.toString());[/code]Ps.: não sei pq, o “code” aki do guj inguliu os “_” antes do nome dos métodos

A saida do console é

from Pais t1 where t1.nome like 'B%' or t1.id > 10

Gostaria de saber se tem muita coisa do genero por ai, e se tiver onde tem documentação disso preu dar uma olhada… vlw ^^

a forma de usar é bem fácil, com qualquer ferramente como eclipse, basta digitar os
._
após cada método, que o eclipse filtra e mostra só as opções possiveis, os outros métodos são todos ineretes a Object

Então, no JPA 2.0, que vai sair no meio desse ano, haverá uma API de Criteria que usa um esquema de DSL para fazer pesquisas. As Criterias já existiam no Hibernate, mas a do JPA me parece ser mais conciso e limpo.

Para o Hibernate, existe a documentação em http://hibernate.org/hib_docs/v3/reference/en/html/querycriteria.html .

O seu exemplo é interessante, mas só existe a operação de seleção de registros (cláusura WHERE), faltaria a projeção dos registros (cláusula SELECT) onde se definiria quais as colunas que me interessam.

é leonardo ^^ … a necessidade faz o homen… o meu busca todos os campos pq não tive ainda necessidade de filtralos, eu tinha visto o do hibernate… é muito completo, porem pouco intuitivo,

depois de criado o meu objeto where, praticamente não tem erro ao fazer o SQL, pois a opção “_build()” liberando o objeto de consulta, só aparece nas horas certas… e o depois é so enviar pro repositorio

Builder<Pais> query = PaisWhere()._name()._equals("Brasil")._build(); Pais brasil = Repositories.get(query);

mais vou estudar a API do hibernate (afinal tenho 1 repositorio que o implementa tb ^^