【问题标题】:How to correct create JPQL request?如何更正创建 JPQL 请求?
【发布时间】:2020-09-03 12:25:55
【问题描述】:

我有存储库方法:

@Query(value = "select t from Transaction t " +
        "where t.bankAccountId in (:bankAccountIds) " +
        "and t.tradeTime is not null " +
        "and t.ccy is not null " +
        "and t.net is not null " +
        "and t.tradeTime >= :startDate and t.tradeTime <= :endDate " +
        "and t.status = :status")
List<Transaction> findAllByBankAccountIdInAndTradeTimeBetween(@Param("bankAccountIds") Iterable<UUID> bankAccountIds,
                                                              @Param("status") TransactionStatus status,
                                                              @Param("startDate") LocalDateTime startDate,
                                                              @Param("endDate") LocalDateTime endDate);

但是当我尝试使用此代码时出现异常:

原因:org.postgresql.util.PSQLException: ERROR: syntax error at 或靠近“)”

如何解决?

【问题讨论】:

  • 这能回答你的问题吗? JPQL IN clause: Java-Arrays (or Lists, Sets...)?
  • 不,这不是我的问题 =(
  • 你需要传入一个List,并使用正确的语法是IN :bankAccountIds
  • 你可能是一个空的参数列表,所以你最终得到...IN ()....
  • 删除括号后添加异常的完整堆栈跟踪。

标签: java jpa spring-data-jpa jpql


【解决方案1】:

我认为你不需要括号 (:bankAccountIds)

【讨论】:

  • 我有另一种方法,其中有括号并且有效
  • 接收的是单个值还是列表?
  • 接收列表
  • 您是否尝试过使用 List 而不是 Iterable?
猜你喜欢
  • 2017-06-13
  • 2020-08-11
  • 1970-01-01
  • 2015-04-17
  • 2010-12-14
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 2016-04-19
相关资源
最近更新 更多