Bom dia javaflex. O código da procedure não posso postar por ser de um software de terceiro, mas ela retorna um double precision. Via IBexpert ao executá-la o resultado está correto.
O que eu quero é integrar os meus aplicativos via WebServiceRestfull a um software já existente.
Sobre o código que executa a procedure seria esse:
Vai por partes. Copia e cola no createSQLQuery exatamente o código que funcionou no IBExpert, com parâmetros cravados. E se é um único valor retornado, usa uniqueResult.
Object resultado = getSession().createSQLQuery("SELECT nome_coluna FROM procedure(....)").uniqueResult();
System.out.println(resultado);
Faz funcionar assim primeiro, depois você lida com a parte de setar parâmetros e tipo de retorno do Java.
Bom dia meu amigo.
Passei somente para lhe agradecer pelo empenho em ajudar.
Final de semana me concentrei bastante e na questão e consegui resolver.
Na verdade o problema não está no hibernate ou no retorno dos dados.
Fui no ibexpert e selecionei um produto como teste e obtive o resultado 16,000. Sem querer acabei clicando na linha do registo e vi que na verdade o ibexper através do double precision já estava arredondando o valor que na verdade era 16,000000000000001 que é o valor que o hibernate estava recebendo.
Para resolver essa situação criei uma classe utilitário onde criei um metodo que recebe uma String e converte para BigDecimal, dessa forma eu consegui chegar no valor que preciso.