Oracle JPA – 使用INTERVAL查询

前端之家收集整理的这篇文章主要介绍了Oracle JPA – 使用INTERVAL查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的数据库表中有一个Timestamp列,LASTUPDATED,我调查它以决定是否应更新行.如果记录在过去10分钟内未更新,我会更新它.我想将日期处理委托给DB,但以下都不起作用:

这个说“意外的标记::靠近[…]”

Query query = entityManager.createQuery("SELECT x FROM MyEntity x WHERE x.lastUpdated < SYSTIMESTAMP - INTERVAL :olderThen MINUTE");
    query.setParameter("olderThen",10);
    list = query.getResultList();

这个说“意外的令牌:’10’附近[…]

Query query = entityManager.createQuery("SELECT x FROM MyEntity x WHERE x.lastUpdated < SYSTIMESTAMP - INTERVAL '10' MINUTE");
    list = query.getResultList();

这个人说出了意想不到的象征:’?’近[…]

Query query = entityManager.createQuery("SELECT x FROM MyEntity x WHERE x.lastUpdated < SYSTIMESTAMP - INTERVAL ?1 MINUTE");
    query.setParameter(1,10);
    list = query.getResultList();

我可以将这个INTERVAL关键字与JPA一起使用吗?表达式在语法上是正确的,我用控制台测试它.

谢谢你们的帮助,
盖尔盖伊

解决方法

JPA和Hibernate不兼容间隔,最后我发现它…

支持日期算术,尽管是以更有限的方式.这部分是由于数据库支持的差异,部分是由于查询语言本身缺乏对INTERVAL定义的支持.
资料来源:http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch11.html

只能使用BETWEEN关键字.
照顾自己

顺便说一句,正确的表达是:

select x from MyEntity x where cast((systimestamp - (1/24/60) * 10) as timestamp) between lastUpdated and systimestamp

猜你在找的Oracle相关文章