Запрос JPA с фильтром по текущей отметке времени - секунды для Oracle

Я использую 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.
Я нашел следующее на каком-то веб-сайте оракула.

Используйте функцию add_months в Oracle и используйте простую математику, чтобы преобразовать значение месяца в секунды.

Если выше возможно, я смогу использовать следующие

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

Изменить: мне нужен способ JPA для Eclipse link или способ Oracle, с помощью которого add_months можно использовать для добавления/вычета секунд.


person phoneynk    schedule 27.05.2013    source источник
comment
Пожалуйста, включите сообщение об ошибке, сгенерированный SQL и нужный вам SQL (и попробуйте SQL, который вы хотите, чтобы убедиться, что он действительно работает)   -  person James    schedule 28.05.2013


Ответы (1)


(Стандарт JPA 2.1) JPQL позволяет включать «FUNCTION» в предложения WHERE. Нигде нет «FUNC», за исключением, может быть, расширения некоторых поставщиков, и людям всегда рекомендуется избегать тех, особенно там, где есть стандарт.

person DataNucleus    schedule 27.05.2013
comment
Спасибо за совет, будем иметь в виду. Я все еще ищу решение моей первоначальной проблемы. - person phoneynk; 28.05.2013