Hibernate retorna null mesmo existindo o objeto no banco de dados

3 respostas
betinhoneres

Bom dia a todos.

Estou tentando consultar um registro no banco de dados com native query porem a consulta sempre retorna null. Segue abaixo meu método:

public BigInteger consultarIdDoProdutoPeloCodigoBarra(String codigoBarra) {
	StringBuilder sql = new StringBuilder("select id from produto ")
	.append("where codigobarra = '")	
	.append(codigoBarra)
	.append("' limit 1");
	
	return (BigInteger)getSession().createSQLQuery(sql.toString()).uniqueResult();
}

Alguem saberia me dizer se a sintaxe está errada, ou o problema é na sessão do hibernate, pois esses dados já estão cadastrados no bd.

Agradeço a atenção. Att.

3 Respostas

magnocosta

Seguinte,

Dee uma olhada no seu modelo e verifique se existe algum atributo mapeado com nullable=false.
Caso tenha verifique se na linha que você esta tentando recuperar do banco de dados o campo citado acima esta nulo.

Caso ele esteja o hibernate não vai te trazer esse cara, acredito que isso acontece para validar os dados do seu banco de dados.
Pois se na entidade vc diz q nao pode ser nulo pq no banco esta nulo ? faz sentido !

Se não for esse o problema de um print no sql !

Abraçooo !

betinhoneres

Problema resolvido! Apenas substitui o = por like:

.append(“where codigobarra = '”)
por:
.append(“where codigobarra like '”).

Deveria funcionar com “=” também, pois quando eu debugava, eu pegava a string e rodava no editor de sql e ele trazia o resultado para mim. Bem, usei like e funfou! o/

Obrigado pela ajuda.

betinhoneres

Problema resolvido! Apenas substitui o = por like:

.append(“where codigobarra = '”)
por:
.append(“where codigobarra like '”).

Deveria funcionar com “=” também, pois quando eu debugava, eu pegava a string e rodava no editor de sql e ele trazia o resultado para mim. Bem, usei like e funfou! o/

Obrigado pela ajuda.

Criado 13 de março de 2012
Ultima resposta 13 de mar. de 2012
Respostas 3
Participantes 2