Generic Criteria + Hibernate

1 resposta
Nykolas_Lima

Alguém já implementou algum método para query generica?

Por exemplo, um método que receba um Map<NomeCampo, Valor> e faça uma query dinamica.

Abraços

1 Resposta

rimarck

Ja tentou usar o org.hibernate.criterion.Example? Talvez ele resolva seu problema…ele cria a lógica de um objeto para um criteria do hibernate automaticamente, de acordo com o valor jogado nos campos de seu objeto. Só preste atenção, ele faz somente a lógica para campos com valor diferente do valor padrão (inicializado)…veja abaixo para exemplificar:

Pessoa objSeu = new Pessoa(); // Classe pessoa como exemplo, o campo nomePessoa na classe esta "private nomePessoa = null;"
objSeu.setNomePessoa("Joao"); // se o campo nomePessoa fosse "private nomePessoa = "Joao";", o valor aqui setado "Joao" seria ignorado pelo example, pois esta igual a inicializacao (nao seria criado nenhuma logica para o criteria)


// Cria example
Example exampleObj = Example.create(objSeu);
// Algumas funcoes dele
// exampleObj.enableLike(MatchMode.ANYWHERE); // MatchMode.ver_demais_que_tem
// exampleObj.ignoreCase(); // caso queira ignorar maiuscula != minuscula
// exampleObj.excludeProperty("campoSeuObj"); // caso queira ignorar algum campo do objeto
// veja documentacao para demais funcoes de example

// Cria criteria normal
Criteria criteria = sessaoHibernate.createCriteria(objSeu.getClass());

// Adiciona logica para seu objeto, criado pelo example, no seu criteria
criteria.add(exampleObj);

// Mexa no seu criteria conforme necessite

// Excuta criteria
// Aqui no caso o criteria ja estaria com a logica de verificar o campo nomePessoa, do objeto do tipo Pessoa, como nomePessoa = "Joao"  
criteria.uniqueResult(); 
//criteria.list();

Flws.

Criado 25 de fevereiro de 2010
Ultima resposta 25 de fev. de 2010
Respostas 1
Participantes 2