带有当前时间戳过滤器的JPA查询 - Oracle的秒数

时间:2013-05-27 12:37:39

标签: java oracle function datetime jpa

我正在使用JPA,Eclipse链接,Oracle。 我试图在我的JPA查询中引入一个等同于以下oracle表达式的条件

current_timestamp - NUMTODSINTERVAL(10, 'SECOND')

我尝试了几个类似于以下的查询

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

但无济于事。都导致语法错误。我想避免本机查询以及使用java计算值 我在oracle网站上找到了以下内容。

  

使用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方式这样做或Oracle方式使用add_months可用于添加/减少秒。

1 个答案:

答案 0 :(得分:1)

(标准JPA 2.1)JPQL允许“FUNCTION”包含在WHERE子句中。没有任何地方存在“FUNC”,除非在某些供应商扩展中,并且人们总是被建议避免那些特别是有标准的地方