我有一个 Oracle 函数,它接受一个日期作为参数,并返回一个日期。函数是这样的:
FUNCTION my_func(par1 IN DATE, par2 IN NUMERIC) RETURN DATE AS
ret_val DATE;
BEGIN
....
END;
我需要在我的 Java 应用程序中调用此函数,并且目前正在使用 JPQL 这样做。该代码适用于在 JBoss 5 上运行的 Web 应用程序,如下所示:
Query q = entityMng.createNativeQuery("SELECT MY_FUNC(?1,?2) FROM DUAL");
java.util.Date now = new Date();
long param2 = 110L;
q.setParameter(1, now);
q.setParameter(2, param2);
java.sql.Date retSql = null;
Object obj = q.getSingleResult();
if (obj != null) {
retSql = (java.sql.Date) obj;
}
执行代码后,retSql
变量包含正确的日期,但有一个 time = 00.00.000
。即使使用java.util.Date
而不是java.sql.Date
, 作为retSql
.
在调查这个问题时,我遇到了这篇 SO 帖子How to convert an Oracle Date field into java.util.Date through JPA,但我不明白如何在我的情况下使用“addScalar”。
任何帮助将不胜感激,在此先感谢。