Trabalhando com hora no Ireport

Montei a seguinte query no mysql

SELECT
ponto.dia AS ponto_dia,
ponto.hora_entrada AS ponto_hora_entrada,
ponto.hora_inicio AS ponto_hora_inicio,
ponto.hora_fim AS ponto_hora_fim,
ponto.hora_saida AS ponto_hora_saida,
ponto.dia_semana AS ponto_dia_semana,
ponto.mes AS ponto_mes,
ponto.ano AS ponto_ano,

CAST(@total_hora:=TIMEDIFF(hora_saida, hora_entrada)AS TIME) as total_hora,
CAST(@total_trabalhado:=TIMEDIFF(hora_fim, hora_inicio) AS TIME) as tota_almoco,
CAST(@saldo:=TIMEDIFF(@total_hora, @total_trabalhado) AS TIME) as total_trabalhado,
CAST(@resto:=TIMEDIFF(@saldo, ‘08:00:00’) AS TIME) as saldo

FROM ponto

é um sistema de folha de ponto, quando eu coloco essa query no ireport funciona porem quando o valor do saldo é negativo Ex: -01:00:00, ocorre o seguinte erro:

Error filling print… Unable to get value for field ‘saldo’ of class ‘java.sql.Time’
net.sf.jasperreports.engine.JRException: Unable to get value for field ‘saldo’ of class ‘java.sql.Time’

no mysql funciona porem no ireport cai na exception quando o saldo de horas é negativo.

Alguem que já passou por essa situação pode me dar uma luz.

na penultima linha da query (CAST(@resto:=TIMEDIFF(@saldo, ‘08:00:00’) AS TIME) as saldo ) ao inves de retornar TIME ALTERE PARA CHAR

DAI QUANDO FOR PARA O IREPORT PODERA TER HORA NEGATIVA PORQUE O JAVA IRÁ USAR O CLASSE STRING AO INVES DA CLASSE JAVA.SQL.TIME QUE NÃO ESTAVA ACEITANDO HORA NEGATIVA.