私は、とりわけ日付をパラメータとして受け入れ、日付を返す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 an Oracle Date field into java.util.Date through JPAに出くわしましたが、私の場合は "addScalar" の使用方法がわかりません。
事前に感謝します。