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
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
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.