我正在尝试根据使用Spring Data JPA规范接收到的一堆查询参数从表中过滤结果。我需要获取类型为UUID
的Distinct Column的结果。我需要查询的所有其他查询参数的类型均为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。
答案 0 :(得分:0)
问题是您试图结合使用Spring Data JPA的两个独特功能:规范和查询派生。这是行不通的。
您应该做的是创建方法的custom method implementation,该方法使用JPA Criteria API构造查询,然后添加您作为参数传递的谓词。