postgresql的interval方法的Java查询不起作用

postgresql的interval方法的Java查询不起作用,java,postgresql,Java,Postgresql,我正在写postgresql查询。当我运行查询时 reservatio0\uu0.DATE\u>NOW-“60分钟”::在pgAdmin上的间隔工作正常,但在java中我得到 QuerySyntaxException,意外标记::bla bla 如果我运行这个代码 List<Reservation> list = em.createQuery( "select r " +

我正在写postgresql查询。当我运行查询时

reservatio0\uu0.DATE\u>NOW-“60分钟”::在pgAdmin上的间隔工作正常,但在java中我得到

QuerySyntaxException,意外标记::bla bla

如果我运行这个代码

List<Reservation> list = em.createQuery( 
                                    "select r " +
                                    "from Reservation r " +
                                    "where r.group.id=:groupName " +
                                 "  and  r.date >(NOW() - '60 MINUTES'::INTERVAL) " +
                                    "order by r.date asc")
                                    .setParameter("groupName", groupName)
                                    .setParameter("number", number)
                                    .setMaxResults(1)
                                    .getResultList();

尝试将冒号运算符:替换为\\:
这将转义这个特殊字符。

IIrc您必须将间隔放在金额前面,如下所示:

and  r.date >(NOW() - interval '60 minutes')

意外标记\it saysunexpected token'it saysTry interval'60'minutes institude有什么特殊原因您希望从PG而不是Java端执行此操作创建日历并相应地设置时间?无关:您不应该命名列日期,因为它是保留关键字@AngeloNeuschitzer我只是认为这会更优雅,所以很明显,被称为JPA的数据库混淆层不支持ANSI SQL,因为间隔“60”分钟是符合ANSI标准的间隔文字。您需要查看JPA文档,了解如何在JPQL或HQL中使用时间间隔和日期