0

私はこの方法を持っています:

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

4

1 に答える 1

0

パラメータ inicio は、整数を想定しているため、日付ではありませんquery.setDate(1, inicio); query.setDate(2, fim);

于 2014-07-15T11:45:33.700 に答える