Java 当前时间戳上带有筛选器的JPA查询-Oracle的秒数

Java 当前时间戳上带有筛选器的JPA查询-Oracle的秒数,java,oracle,function,datetime,jpa,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 Query quer

我正在使用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 
Query query = entityManager.createQuery("select u"
                    + " from User u"
                    + " where"
                    + " FUNC('add_months', CURRENT_TIMESTAMP, :offset) > u.birth_date "//)"// 
                    );
    query.setParameter("offset", getOffSet());
但是没有用。所有这些都会导致语法错误。我希望避免使用本机查询以及使用java计算值。
我在一些甲骨文网站上发现了以下内容

在Oracle中使用add_months函数,并使用简单的数学将月份值转换为秒

如果以上是可能的,那么我将能够使用以下

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

编辑:我需要一些EclipseLinkJPA方法来实现这一点,或者使用Oracle方法来增加/减少秒数。

(标准JPA2.1)JPQL允许在WHERE子句中包含“函数”。任何地方都没有“FUNC”,除了某些供应商扩展中的功能外,人们总是建议避免使用这些功能,特别是在有标准的情况下(标准JPA 2.1)。JPQL允许在where子句中包含“函数”。任何地方都没有“FUNC”,除了在某些供应商扩展中,人们总是被建议避免使用那些,特别是在有标准的地方

感谢您的建议,请记住。我仍然在寻找解决我原来问题的方法。谢谢你的建议,我会记住的。我仍在寻找原始问题的解决方案。请包括错误消息、生成的SQL和您想要的SQL(并尝试您想要的SQL以确保其实际工作)请包括错误消息、生成的SQL和您想要的SQL(并尝试您想要的SQL以确保其实际工作)