将 postgresql 查询工作到本机休眠查询 PSQLException 语法错误

Working postgresql query to native hibernate query PSQLException syntax error

我有下面的 postgresql 查询,如果直接在 db 上使用它可以正常工作:

select memory_inmb from app where dt=(select dt from app where org='AAAA' 

AND to_timestamp(dt/1000) >= date_trunc('month', '2021-07-01 06:07:07+00'::timestamp) 

AND to_timestamp(dt/1000) < date_trunc('month', '2021-08-01 06:07:07+00'::timestamp) 

limit 1) AND org='AAAA';

在我的存储库中,我将其编写为原生查询,如下所示:

@Query(value="select a.memory_inmb from app a where a.dt=(select a.dt from app a where a.org='AAAA' AND to_timestamp(a.dt/1000) >= date_trunc('month', '2021-07-01 06:07:07+00'::timestamp) AND to_timestamp(a.dt/1000) < date_trunc('month', '2021-08-01 06:07:07+00'::timestamp) limit 1) AND a.org='AAAA'", nativeQuery = true)
    
List<BigInteger> findMemory();

在我的实现中 class 现在我只调用 return this.appRepository.findMemory();

这给了我以下语法异常:

org.postgresql.util.PSQLException: ERROR: syntax error at or near ":"
  Position: 148

为什么我可以 运行 直接在数据库上查询就好了,但是将其用作本机查询却不起作用?

冒号需要转义,所以 JPA 的 :: 应该变成 \:\:,如此处解释:
(对于 JPA : 表示命名参数)

在您的情况下,您还可以将 :: 替换为 CAST (myData as timestamp) 语法。