【发布时间】:2017-09-24 13:11:00
【问题描述】:
我们有一个存储库,我们想在其中使用带有分页的动态投影:
@Repository
public interface PersonRepository extends JpaRepository<Person, Long> {
@Query("select p from Person p")
<T> Page<T> dynamicInterfaceProjection(final Class<T> projectionClass, final Pageable pageable);
}
但是当我们调用它的时候,我们得到如下异常:
Caused by: java.lang.IllegalArgumentException: Unknown parameter position: 1
at org.hibernate.query.internal.QueryParameterBindingsImpl.getBinding(QueryParameterBindingsImpl.java:240) ~[hibernate-core-5.2.11.Final.jar:5.2.11.Final]
at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:503) ~[hibernate-core-5.2.11.Final.jar:5.2.11.Final]
at org.hibernate.query.internal.AbstractProducedQuery.setParameter(AbstractProducedQuery.java:104) ~[hibernate-core-5.2.11.Final.jar:5.2.11.Final]
at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:141) ~[spring-data-jpa-1.11.7.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.StringQueryParameterBinder.bind(StringQueryParameterBinder.java:61) ~[spring-data-jpa-1.11.7.RELEASE.jar:na]
at org.springframework.data.jpa.repository.query.ParameterBinder.bind(ParameterBinder.java:101) ~[spring-data-jpa-1.11.7.RELEASE.jar:na]
显然,Spring Data JPA 无法识别第二个 Pageable 参数。切换参数顺序会导致相同的异常。
我们做错了吗?这还支持吗?
【问题讨论】:
-
在我的测试中分页、可选和流式动态投影不起作用:jira.spring.io/browse/DATAJPA-1185
-
太好了,我们正在等待尽快修复
标签: hibernate spring-data spring-data-jpa