Estou tendo um problema com o QBE do Hibernate.
Estou fazendo da seguinte maneira.
public List findByQBE(Object obj)throws HibernateException{
Unidade exampleUnidade = (Unidade) obj;
Criteria criteria = getSession().createCriteria(Unidade.class);
criteria.add( Example.create(exampleUnidade));
return criteria.list();
}
Até que está funcionando o unico problema é quando o objeto vem só com o valor da chave primaria preenchida. Se acontecer isso ele está devolvendo todos os registros do banco.
Me parece que o QBE só funciona se um dos valores que não fizerem parte da chave estiverem preenchido. É isso mesmo ou eu estou fazendo alguma coisa errada… Se alguem puder me ajudar eu agradeço…
Valeu
Rapaz, eu remexi nas coisas aqui e ,não tenho certeza, mas acho que ele não leva o identificador em consideração quando está procurando por exemplos não, até porque seria meio ilógico, já que o identificador é único, não vai retornar nenhum exemplo.
Beleza valeu, vou tentar fazer de outra forma é que no meu caso eu tenho todos os campos na tela Swing e o usuario pode procurar por qq campo então se ele preenche só o campo que se refere a chave o QBE volta tudo mas eu vou incluir uns “Expression.eq(campochave, valor)” se as propriedades da chave estivem preenchidas…
Valeu
É fácil, vc primeiro verifica se o identificador está preenchido, se estiver faz o load, caso contrário, utiliza o query by example.
Eu utilizava assim sem maiores problemas…
Se quiseres algo mais dinamico, de uma olhada na Interface ClassMetadata, onde vc pode pegar o identificador sem saber qual é o nome do método.
Fallow