通过Hibernate查询进行调用时PostgreSQL日期类型转换问题

时间:2019-11-29 11:37:20

标签: java hibernate

select * 
from commanconfig.fn_cm_get_usage_statistics_progress(422,'1-nov-2019','27-nov-2019')

上面的查询工作正常。

但是当我通过Hibernate调用该函数时,显示错误:-

org.postgresql.util.PSQLException: ERROR: function 
property.fn_pt_assessment_register_report(integer, 
unknown, unknown) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type 
casts.

休眠代码为:

Session session = sessionFactory.getCurrentSession();
    StoredProcedureQuery query = session
                .createStoredProcedureQuery("property.fn_pt_assessment_register_report")
                .registerStoredProcedureParameter(1, Integer.class, ParameterMode.IN)
                .registerStoredProcedureParameter(2, java.util.Date.class, ParameterMode.IN)
                .registerStoredProcedureParameter(3, java.util.Date.class, ParameterMode.IN)
                .setParameter(1, (int)qryprm.get("ULBID"))
                .setParameter(2, ((java.util.Date)qryprm.get("FROMDATE")))
                .setParameter(3, ((java.util.Date)qryprm.get("TODATE")));
           Boolean b = query.execute();
            return query.getResultList();

日期格式转换:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    try {
        qryprm.put("FROMDATE", (sdf.parse((String)qryprm.get("FROMDATE"))));
        qryprm.put("TODATE", (sdf.parse((String)qryprm.get("TODATE"))));
    } catch (ParseException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

1 个答案:

答案 0 :(得分:0)

您的日期可能不完全正确,因为JSF在日期中增加了小时时间。尝试使用新的SimpleDateFormat(“ dd / MM / yyyy”)进行格式化。在这种情况下,我使用'dd / MM / YYYY',因为我的dateStyle是欧洲的,因此您必须调整为自己的。