首页 > 解决方案 > 尝试调用 JPA 函数时出现语法错误

问题描述

当我试图调用 JPA 函数时,我收到了一个错误:“:”或附近的语法错误

 public interface BcaTestRepository extends CrudRepository<InBodyBCA, Long> {
  @Query(value = "SELECT * FROM in_body_bca bca WHERE person_id = :personId " +
      "AND to_timestamp(bca.datetimes::text, 'YYYYMMDDHH24MISS')  BETWEEN :startRange AND :endRange",
      nativeQuery = true)
  List<InBodyBCA> findAllByPersonId(@Param("personId") Long personId,
                                    @Param("startRange") LocalDateTime startRange,
                                    @Param("endRange") LocalDateTime endRange);

但在 PgAdmin 中,查询工作正常

SELECT id, to_timestamp(datetimes::text, 'YYYYMMDDHH24MISS') as dt FROM in_body_bca WHERE to_date(datetimes::text, 'YYYYMMDDHH24MISS')
BETWEEN '2018-05-07' AND '2019-05-07' ORDER BY to_date(datetimes::text, 'YYYYMMDDHH24MISS') DESC ;

标签: javapostgresqlhibernatejpa

解决方案


您在这里使用双冒号:bca.datetimes::text. JPA 会寻找text变量名。

你需要逃避它:

bca.datetimes\\:\\:text

推荐阅读