PostgreSQL 通过休眠查询调用时出现日期类型转换问题


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

上述查询工作正常。

但是当我通过休眠调用该函数时,它的显示错误:-

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();
}

可能您的日期不完全正确,因为 JSF 将小时时间添加到日期中。尝试使用新的 SimpleDateFormat("dd/MM/yyyy"(进行格式化。在这种情况下,我使用'dd/MM/YYYY',因为我的日期风格是欧洲的,你必须适应你的。

最新更新