Olá pessoal… há como realizar uma busca utilizando o Hibernate passando um objeto contendo apenas algumas informações armazenadas??
Por exemplo, se tenho uma classe Cliente e nela tenho:
nome;
idade;
endereco;
profissao;
Porém quero fazer um formulário onde o usuário digita apenas alguns dos dados e ele busca por todos os Clientes que têm os dados passados… por exemplo:
nome = “João”;
idade = 21;
endereco = null;
profissao = null;
Daí ele retornaria todos os Clientes em um List, que têm o nome João e 21 anos de idade…
O Hibernate tem uma sacada muito legal que e o Example queries vc passa pra ele uma entidade e ele procura por todos os atributos nao nulos passados dentro da entidade. Ignorando versão, identificadores e associações.
adrianostanley
E ae passos… era exatamente isso que eu queria… mas agora surgiu mais um empecilho…
Eu utilizo o SwingBean como framework pros formulários… e ele não seta os campos vazios como null, mas como “”… e o Hibernate acaba buscando no banco de dados por valores “” ao invés de ignorá-los…
Há como fazer pro Hibernate tratar os “” como null??
Abraços e obrigado…
passos
Não que eu saiba ou ja tenha utilizado. Ate onde eu sei so tem excludeZeroes() ou excludeProperty(name).
Bem que eles podiam implementar algo do tipo excludeValue(“Um Valor Qualquer”) ou excludeValues(Uma Collection ou algo assim)
Nada implede que vc implemente isso mas vai dar um trabalho!
adrianostanley
Enquanto isso vai na gambiarra mesmo… antes de enviar eu testo cada campo… se tiver “” eu seto como null mesmo! uhauha
Mas se eu descobrir uma maneira posto aqui…
Vlw pessoal… abraços!
passos
Estava pensando aqui com meus botões. Se tem como excluir os zeros, tem que ter como excluir as strings em branco.
Cria uma classe utilizaria:
public final class NotNullOrBlankPropertySelector implements PropertySelector {
public boolean include(Object object, String propertyName, Type type) {
return object!=null && (
!(object instanceof String) || !( (String) object ).equals("")
);
}
}