Ajuda com Sql nativo no Hibernate [Resolvido............]  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
supertchuco
Thread.start()
[Avatar]

Membro desde: 22/04/2009 15:15:25
Mensagens: 43
Offline

Boa tarde a todos estou com um problema que me está fazendo arrancar os cabelos....

É o seguinte , tenho uma tela , que um usuário digita qualquer slq, tanto insert, update , select ....etc.., abaixo o código no java onde está o problema :




O problema é que se o comando é um select , então o q.list() retorna algo , nem que seja uma lista vazia , se é outra coisa (insert, update)ele não cria essa list() , e o programa acaba gerando esse erro ao tentar retornar o q.list() "ERROR [JDBC EXCEPTION] NO RESULT FOR SQL".

Eu preciso diferenciar se o retorno vai ter uma lista ou não , ou poder diferenciar se o resultado da operação tem um retorno ou não , tá brabo, não consigo testar isso,

This message was edited 2 times. Last update was at 12/03/2010 18:22:29

[Email] [MSN]
malucocelo
JavaBaby
[Avatar]

Membro desde: 05/08/2009 12:38:53
Mensagens: 77
Offline

Verifica se a String recebida começa com select, update ou delete.
supertchuco
Thread.start()
[Avatar]

Membro desde: 22/04/2009 15:15:25
Mensagens: 43
Offline

Pensei nisso, mas o usuário pode digitar qualquer bloco de sql, misturando , então pensei se teria como testar se no "q" existe o objeto list() criado , mas não encontrei algo do tipo.............
[Email] [MSN]
Poneis123
JavaGuru
[Avatar]

Membro desde: 27/02/2008 14:08:51
Mensagens: 205
Localização: Osasco-SP
Offline

Cara, não entendo muito de hibernate, se eu falar bosta desculpa ae.
mas assim, quando vc chama o q.list() é uma chamada de um método certo? não tem como o método hora retornar uma lista, hora não retornar.
supertchuco
Thread.start()
[Avatar]

Membro desde: 22/04/2009 15:15:25
Mensagens: 43
Offline

A questão seria, antes de dar o retorno dessa função , eu verificaria se o q.list() existe, caso não gerava outro retorno.
[Email] [MSN]
Poneis123
JavaGuru
[Avatar]

Membro desde: 27/02/2008 14:08:51
Mensagens: 205
Localização: Osasco-SP
Offline

num da pra colocar ele num try catch?



novamente se eu falei alguma coisa grotesca, foi mal.. só tentando ajudar de alguma forma =)
supertchuco
Thread.start()
[Avatar]

Membro desde: 22/04/2009 15:15:25
Mensagens: 43
Offline

Capaz , kra ...........

Tipo o que tu me disse agora até serve, mas tem como diferenciar duas excessões , tipo uma é essa : error[jdbc exception] no result for sql , essa excessão teria um bloco catch e depois teria que ter outro para as outras excessões.....
Teria como ? Não entendo muito desta parte.....
[Email] [MSN]
Poneis123
JavaGuru
[Avatar]

Membro desde: 27/02/2008 14:08:51
Mensagens: 205
Localização: Osasco-SP
Offline

tem sim..

na verdade vc não precisa criar um bloco catch para todas as exceções possiveis.. vc cria somente para as que vc quer tratar q no caso é a (error[jdbc exception] no result for sql) as demais serão jogadas para o chamador do seu método listaComSql() como uma exceção UnisException q ta na assinatura do método.

Mas pra vc tratar apenas essa exceção vc precisa saber qual é exatamente a exceção q ta retornando, provavelmente o seu está retornando a seguinte exceção:
https://www.hibernate.org/hib_docs/v3/api/org/hibernate/JDBCException.html

ai vc precisa fazer o bloco da seguinte forma:



Testa ae =)
supertchuco
Thread.start()
[Avatar]

Membro desde: 22/04/2009 15:15:25
Mensagens: 43
Offline

Bah velho valeu mesmo , eheheh agora aprendi a parte das excessões.....


segue a solução



Só tive que fazer uma gambiarra ali no retorno , mas funfou bem....
[Email] [MSN]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team