Hibernate - sql-query

8 respostas
micheljuca

pessoal,

alguem ja usou esse recurso no hibernate2 ?
li a documentacao e fiz do jeito que pedia:

Mando executar e da um problema

2006-05-18 17:30:58,187 ERROR net.sf.hibernate.util.JDBCExceptionReporter - Nome de coluna inválido
2006-05-18 17:30:58,187 ERROR net.sf.hibernate.util.JDBCExceptionReporter - Nome de coluna inválido
org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: Nome de coluna inválido
java.sql.SQLException: Nome de coluna inválido

Mas eu pego o sql gerado e executo e funciona, ou seja,
nao tem nada de coluna errada.
No forum do spring alguem falou em dialect do Oracle,
mas eu mudei para Oracle9Dialect e nao adiantou.

Alguem ja teve esse problema?

agradeceria a ajuda, valeu.

8 Respostas

JohnnyDurden

Vc tem como mandar o HQL?
Vendo somente o erro é difíci de dizer!

micheljuca

Query:

<sql-query name="findMedicoByEspecialidadeHospital">
    <return alias="medico" class="br.com.hapvida.model.cadastro.UsuarioMedicoCredenciado"  />
    select distinct 
		p.NM_PESSOA_RAZAO_SOCIAL as {medico.nome},
        medico.CD_PESSOA as {medico.codigo}
	from 
		TB_PRESTADOR_FISICO medico,
	    TB_PESSOA p,
	    TB_HORARIO_ATENDIMENTO_CAD h
	where 
		h.CD_PRESTADOR_FISICO = medico.CD_PESSOA and 
		p.CD_PESSOA = medico.CD_PESSOA and 
		h.CD_ESPECIALIDADE = ? and
        h.CD_PRESTADOR_JURIDICO= ?
  </sql-query>

chamada:

Object[] params = {especialidade, hospital};
return getHibernateTemplate().findByNamedQuery("findMedicoByEspecialidadeHospital", params);

Dá um erro de coluna inválida, mas não é possivel.

micheljuca

e o erro:

2006-05-19 11:03:30,468 DEBUG net.sf.hibernate.type.StringType - binding '2' to parameter: 1
2006-05-19 11:03:30,468 DEBUG net.sf.hibernate.type.StringType - binding '8036314' to parameter: 2
2006-05-19 11:03:30,484 DEBUG net.sf.hibernate.type.LongType - returning '8367620' as column: CD_PESSOA0_
2006-05-19 11:03:30,515 ERROR net.sf.hibernate.util.JDBCExceptionReporter - Nome de coluna inválido
2006-05-19 11:03:30,515 ERROR net.sf.hibernate.util.JDBCExceptionReporter - Nome de coluna inválido
org.springframework.jdbc.BadSqlGrammarException: Bad SQL grammar [] in task 'Hibernate operation'; nested exception is java.sql.SQLException: Nome de coluna inválido
java.sql.SQLException: Nome de coluna inválido
_fs

Tentou executar só com JDBC? Se der o mesmo erro é problema no driver.

E por que está usando SQLQuery para esta query? Me parece simples fazê-la com Criteria ou mesmo Query.

micheljuca

vamos as causas…

peguei essa query pronta em HQL e demorava 3 min.
Tentei so mudar a HQl mas os relacionamentos do
hibernate estao uma bagunca, e isso é meio que urgente,
tudo é sempre urgente nao eh.

Manutencao eh sistemas do outros eh complicado…
essa eh a razao de usar a query.

Eu to usando Spring, entao queria aproveitar o controle de transacao, etc…

Eu pego o codigo gerado e jogo no sql e funciona tranquilo. Uso hibernate 2, tomcat 5.0.28 e oracle 9

_fs

Entendi :smiley:

Mas insisto que teste executar com JDBC normal. Não seria a primeira vez que vejo alguém com problemas com os drivers da Oracle.

micheljuca

Esse seria o ultimo caso.
Mas vai ser o jeito entao.
Nao sabe uma forma de aproveitar o Spring?
Pegar a conexao via Spring?
Da uma dica ai da estrutura.
Ou é do jeito grosseiro mesmo?

valeu a ajuda!

murilo_scool

olá pessoal!

estou com um problema sobre isso…

é o seguinte:
no banco tenho uma função, e tenho no java um método que a chama através do Hibernate.
essa função não retorna nada.
no java ela esta sendo chamada, mas não esta sendo executada pelo hibernate.

este é o método.

public void updateItensChecklist( PfjCheckList pfjCheckList ) { Query query = getSession().createSQLQuery("SELECT cadastro.atualizar_pfj_itens_checklist(" + pfjCheckList.getId() + " )"); }

este é o meu arquivo de mapeamento.
<sql-query name="atualizar_pfj_itens_checklist" callable="true"> <return alias="update_item" class="br...." /> { ? = call atualizar_pfj_itens_checklist(?) } </sql-query>

então, como que eu poderia fazer para o hibernate mapear isso?!?

Att Murilo Moreira

valeu!

Criado 18 de maio de 2006
Ultima resposta 10 de out. de 2009
Respostas 8
Participantes 4