E ai galera, to precisando da ajuda de vcs!!
Seguinte, tenho uma tabela chamada controle de peças, dentro dela tem um ID da tabela tipo de controle e um campo STRING chamado valor.
como funciona: esse campo valor (String), poderá receber tanto um DATE quanto um DOUBLE, ai que mora o problema, pois preciso fazer uma comparação desses campos em HQL.
Montei uma estrutra em SQL e funcionou:
SELECT
*,
CASE tipocontrole.cod_tipocontrole
WHEN 1 then
cast(valor as date) > '2011-01-01'
ELSE
cast(valor as float) < 10.5
END
FROM
public.controlepecas,
public.pecasveiculo,
public.tipocontrole
WHERE
controlepecas.codigo_pecasveiculo = pecasveiculo.codigo_pecasveiculo AND
controlepecas.codigo_tipocontrole = tipocontrole.cod_tipocontrole
situacao = true
porem ao criar em HQL me da erro:
StringBuilder sql = new StringBuilder("select object(o), ");
sql.append("CASE o.tipoControle.cod_tipoControle WHEN 1 ");
sql.append("CAST(valor as date) > '2011-01-01' ");
sql.append("ELSE ");
sql.append("CAST(valor as float) < 10.5 ");
sql.append("END ");
sql.append("FROM ControlePecas as o ");
erro:
Caused by: org.hibernate.hql.ast.QuerySyntaxException: unexpected token: , near line 1, column 17 [select object(o), CASE o.tipoControle.cod_tipoControle WHEN 1 CAST(valor as date) > '2011-01-01' ELSE CAST(valor as float) < 10.5 END FROM modelo.frota.ControlePecas as o ]
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:31)
at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:24)
at org.hibernate.hql.ast.ErrorCounter.throwQueryException(ErrorCounter.java:59)
Alguem sabe como resolver, ou tem alguma outra ideia para me ajudar??
[]'s