1

JPA、Eclipse リンク、Oracle を使用しています。次のオラクル式に相当するJPAクエリに条件を導入しようとしています

current_timestamp - NUMTODSINTERVAL(10, 'SECOND')

次のようなクエリをいくつか試しました

select u from User u where (current_timestamp - FUNC('NUMTODSINTERVAL', :offset, 'SECOND')) > u.birth_date 

しかし、役に立たない。すべて構文エラーになります。Javaを使用して値を計算するだけでなく、ネイティブクエリも避けたい.
オラクルのウェブサイトで以下を見つけました。

Oracle で add_months 関数を使用し、簡単な計算を使用して月の値を秒に変換します。

上記が可能であれば、以下を使用できます

Query query = entityManager.createQuery("select u"
                    + " from User u"
                    + " where"
                    + " FUNC('add_months', CURRENT_TIMESTAMP, :offset) > u.birth_date "//)"// 
                    );
    query.setParameter("offset", getOffSet());

編集:これを行うEclipseリンクJPAの方法、またはadd_monthsを使用して秒を加算/減算するOracleの方法が必要です。

4

1 に答える 1

1

(標準 JPA 2.1) JPQL では、"FUNCTION" を WHERE 句に含めることができます。おそらくいくつかのベンダー拡張機能を除いて、「FUNC」はどこにもありません。特に標準がある場合は、それらを避けるように常にアドバイスされています。

于 2013-05-27T16:26:33.383 に答える