JPA Query With Pagable Result抛出异常(表示不应该是Pagable) &



我对Postgres数据库的JPA应用程序有以下查询:

@Query("SELECT c FROM Cacl c WHERE c.name LIKE 'caclId%'")
public Page<Cacl> getCaclIdStartsWith(@Param("caclId") String caclId);

当我启动应用程序时,我得到以下异常:

Error creating bean with name 'caclRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Paging query needs to have a Pageable parameter! Offending method public abstract org.springframework.data.domain.Page .repositories.CaclReposit...(I'm masking here on purpose)... ory.getCaclIdStartsWith(java.lang.String)

暗示结果不会返回多个记录。然而,它应该返回多个记录。实际上,当我运行SQL等效查询时:

SELECT * FROM TBL_CACL WHERE NAME LIKE 'SOME_CACL%';

,它工作得很好,并返回我所期望的多行。我假设我做错了我的语法,但不确定是什么。感谢任何见解。由于

您的异常显式地表示:java.lang. lang。分页查询需要有一个可分页参数!

所以,你应该这样修改方法签名:

@Query("SELECT c FROM Cacl c WHERE c.name LIKE :caclId || '%'")
public Page<Cacl> getCaclIdStartsWith(@Param("caclId") String caclId, Pageable pageable);

,然后以页大小为20的方式访问Cacl的第二页,您可以执行以下操作:

Page<Cacl> cacls = repository.getCaclIdStartsWith("test", PageRequest.of(1, 20));

请参阅文档的这一部分。

相关内容

最新更新