COALESCE, DB2 e HQL.... Isso é possível?

2 respostas
D

Oi a todos
Sou novo com o Hibernate e estou tentando escrever o seguinte código em HQL mas não está funcionando…

No DB2:
SELECT *
FROM TABLE
WHERE column = COALESCE(CAST(variable AS INT), column)

Nesse SQL se no lugar de variable for colocado:
Null --> Traz todas as linhas da tabela
Algum valor --> Traz uma(encontrou) ou nenhuma linha(não encontrou)

No HQL eu escrevi dessa forma:

SELECT t
FROM TABLE t
WHERE t.column = COALESCE(CAST(?1 AS INTEGER), t.column)

O resultado deveria ser o mesmo quando o parâmetro ?1 é preenchido, porém ele não aceita o NULL… e isso parece ser uma característica clááááássica do DB2…
Será que o Hibernate consegue fazer isso?

Essa é a excessão que é levantada quando é passado um NULL:
org.springframework.orm.jpa.JpaSystemException: org.hibernate.exception.SQLGrammarException: could not execute query; nested exception is javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not execute query

2 Respostas

D

FRACOS.

fantomas

Coloque um post com o código hql que vc fez para implementar esta instrução sql.

SELECT t FROM TABLE t WHERE t.column = COALESCE(CAST(?1 AS INTEGER), t.column)

P.S Me parece o que o uso da função CALESCE é assim: COALESCE(t.nomeDaColuna, 0)

flws

Criado 14 de janeiro de 2009
Ultima resposta 19 de jan. de 2009
Respostas 2
Participantes 2