Estou com um problema estranho no hibernate. Estou realizando consultas através da API Example e quando o example é uma chave primária, o hibernate simplesmente ignora e retorna todos os registros da tabela. Já testei com os demais campos e funcionam corretamente. Não sei que o erro é na implementação da busca ou se na anotação da classe.
Estou utilizando o hibernate faz pouco tempo, ainda não conheço as peculiaridades, então, se alguém souber porque acontece isso… =/
Segue o código do método de busca e da classe:
[code] @Entity @Table (name = “designer”)
public class Designer {
O hibernate gera a seguinte consulta SQL quando eu procuro pela chave primária:
Hibernate: select this_.login as login3_0_, this_.name as name3_0_, this_.pass_word as pass3_3_0_ from designer this_ where (1=1)
E essa consulta quando eu procuro por outro campo, no caso, campo name:
Hibernate: select this_.login as login3_0_, this_.name as name3_0_, this_.pass_word as pass3_3_0_ from designer this_ where (lower(this_.name) like ?)
[quote=jamirdeajr] Eu, pra simplificar incluo mais um parâmetro de id no método, e se for passado valor adiciono no criteria o eq assim:
public List<T> getEntitiesByExampleAndId(T entity, Long id) {
Example example = getExample(entity);
Criteria crit = session.createCriteria(classe).add(example);
if(id != null) {
crit.add(Restrictions.eq("id",id));
}
return crit.list();
}
[/quote]
Adicionei essa restrição e funcionou. Descobri que em outras ocasiões, a chave primária também é ignorada, mas adicionei a restrição e funcionou. Obrigada pela ajuda.
[quote]
Já passei bastante por isto, e cabei contornando este problema com um novo projeto só para filtro que eu criei chamado Priuli-Filter
de uma olhada http://www.guj.com.br/java/221618-filter-dinamico-para-hibernate ve se sé é isso vc queria fazer ![/quote]
Dei uma olhada no seu filtro e irei utilizar na minha aplicação.