我正在使用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可用于添加/减少秒。
答案 0 :(得分:1)
(标准JPA 2.1)JPQL允许“FUNCTION”包含在WHERE子句中。没有任何地方存在“FUNC”,除非在某些供应商扩展中,并且人们总是被建议避免那些特别是有标准的地方