【发布时间】:2012-05-03 23:00:02
【问题描述】:
我有一个 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 变量包含正确的日期,但有一个时间 = 00.00.000。即使使用java.util.Date 而不是java.sql.Date 作为retSql 的类型,我也会获得相同的行为。
在调查这个问题时,我发现了这个 SO 帖子 How to convert correctly an Oracle Date field into java.util.Date through JPA,但我不明白如何在我的情况下使用“addScalar”。
任何帮助将不胜感激,在此先感谢。
【问题讨论】:
-
Java Date 类似乎没有时间部分。尝试将您的“现在”变量声明为时间戳,看看是否可以解决问题。