私はこの方法を持っています:
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 呼び出しを行っています。何が悪いのかわかりません。何かご意見は?