我有这个方法:
public Long calculateMilisseconds(Calendario calendario, Date inicio, Date fim) throws ApplicationException {
try {
StringBuffer sb = new StringBuffer();
sb.append("select milissegundos_calendario(?,?,?)");
Session session = HibernateUtil.currentSession();
SQLQuery query = session.createSQLQuery(sb.toString());
query.setInteger(0, calendario.getIdCalendario());
query.setDate(1, inicio);
query.setDate(2, fim);
return (Long) query.uniqueResult();
} catch (ApplicationException ae) {
throw ae;
} catch (Exception e) {
log.error(e);
log.error("# CalendarioHibernateDAO.calcularMilissegundosProdutivos(calendario, inicio, fim) : Long");
throw new ApplicationException("ERRO.1", new String[]{"CalendarioHibernateDAO.calcularMilissegundosProdutivos"}, e, ApplicationException.ICON_ERRO);
} finally {
try {
HibernateUtil.closeSession();
} catch (Exception e) {
log.error(e);
log.error("# CalendarioHibernateDAO.calcularMilissegundosProdutivos(calendario, inicio, fim) : Long");
}
}
}
在设置参数#1 和#2 时, inicio 和 fim 的值实际上是 Date 实例,看起来一切正常。但我得到了以下异常:
10:21:53,877 INFO [STDOUT] 10:21:53,877 ERROR [JDBCExceptionReporter] ERROR: function milissegundos_calendario(integer, unknown, unknown) does not exist.
我正在使用休眠并对 postgresql 函数进行本机 sql 调用。我不知道出了什么问题。有什么想法吗?