1

我正在使用 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 中的 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 可用于添加/减去秒。

4

1 回答 1

1

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

于 2013-05-27T16:26:33.383 回答