Problema com HQL [RESOLVIDO]

5 respostas
fernandogodoy18

Estou com o seguinte problema,

Tenho duas classes sendo:

public class Pessoa(){
 private Long id;
private String nome;
private CPF cpf;

// getters e settes omitidos;

}

e

@Embeddable
public class CPF(){

private String valor;

public void setValor(Object value) {
		this.valor = value.toString().replaceAll("[^0-9]+", "");
	}
}

preciso montar uma query que possibilite a busca de cpf parcial,
por exemplo que começa com 123… e etc

meu hql gerado esta da seguinte forma… SELECT o FROM Pessoa WHERE o.cpf like ? ;
porém quando seto o parâmetro para a execução do HQL… query.setParametro(0, parametro);

se o parâmetro estiver desta forma %123% ele me retorna
Parameter value [%123%] was not matching type CPF…
Para um CPF completo funciona perfeitamente… problema está na busca parcial…

Alguém pode me dar uma ideia de como montar o hql utilizando atributos personalizados ??

5 Respostas

DeGuedes

Cara, isso eh problema no tipo de dado!
Verifica no banco se ele criou o CPF dentro do Pessoa como String!

Pois o teu hql esta correto, os meus estão exatamente iguais!

fernandogodoy18

No banco ele criou um cpf varchar(255) dentro da tabela pessoa…
acredito que o problema não seja lá…

Estou quebrando a cabeça desde cedo e nada de encontrar uma solução…

LPJava

cara ele tá reclamando do tipo, tem algo de estranho ai, realmente tu tem uma coluna nvarchar ?

DeGuedes

Cara Posta o Stack Trace do erro para podermos analisar melhor!

fernandogodoy18

Fiz um teste agora de manha e acabei de resolver o problema…

Inclui o .valor que é a string valor do CPF,

agora meu HQL pra esse caso ficou desta forma…

SELECT o FROM Pessoa WHERE o.cpf.valor like ? ;

escrevi 6 testes para esse caso e retornou o resultado esperado…

Criado 1 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 5
Participantes 3