我有一個Oracle函數,它接受除其他外的日期參數,並返回一個日期。功能是這樣的:Oracle函數返回日期,但沒有時間通過JPQL調用
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類沒有時間部分。嘗試聲明你的'now'變量作爲時間戳,看看是否能解決問題。 – 2012-04-23 11:47:51