【问题标题】:Distinct Column Selection using Spring JPA Specifications and Pagination gives InvalidDataAccessApiUsageException使用 Spring JPA 规范和分页的不同列选择给出 InvalidDataAccessApiUsageException
【发布时间】:2019-10-14 08:48:51
【问题描述】:

我正在尝试根据我使用 Spring Data JPA 规范收到的一堆查询参数从表中过滤结果。我需要得到类型为UUID 的不同列的结果。我需要查询的所有其他查询参数都是String 类型。

所以我尝试的存储库方法是findDistinctByTransactionId(Specficiation<T> spec, Pageable page)

我希望结果是Page<UUID> 类型。但我有一个例外。错误信息是:

org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [org.springframework.data.jpa.domain.Specifications@7c900524] did not match expected type [java.util.UUID (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [org.springframework.data.jpa.domain.Specifications@7c900524] did not match expected type [java.util.UUID (n/a)]

所以这里的问题是让 JPA 知道我们正在寻找的 Distinct Column 是 UUID 类型的方法。

【问题讨论】:

    标签: spring spring-boot jpa spring-data-jpa spring-data


    【解决方案1】:

    问题在于您试图结合 Spring Data JPA 的两个不同特性:规范和查询派生。这不起作用。

    您应该做的是为您的方法创建一个custom method implementation,该方法使用 JPA Criteria API 构造一个查询,然后添加您作为参数传入的谓词。

    【讨论】:

      猜你喜欢
      • 2020-03-03
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多