postgresql的interval方法的Java查询不起作用
我正在写postgresql查询。当我运行查询时 reservatio0\uu0.DATE\u>NOW-“60分钟”::在pgAdmin上的间隔工作正常,但在java中我得到 QuerySyntaxException,意外标记::bla bla 如果我运行这个代码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 " +
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中使用时间间隔和日期