如何在Jpa repository中查询列表前n条元素?findTop自定义方法不生效如何解决
JPA Repository 获取指定条件前N条数据的正确实现
你原来的方法无法运行是因为不符合Spring Data JPA的方法命名规则,OrderBy排序逻辑应该放在所有查询条件之后,且返回值需要指定泛型。
正确命名查询写法
你的需求是筛选investeeId匹配的记录,按id倒序取前4条,正确的方法定义如下:
// 把【实体类】替换成你实际对应的JPA实体类名称即可 List<实体类> findTop4ByInvesteeIdOrderByIdDesc(Long investeeId);
各部分命名规则说明:
findTop4:限定返回结果前4条,也可以替换为findFirst4,二者效果完全一致,需要调整返回条数直接修改数字即可ByInvesteeId:查询条件,对应实体类中investeeId字段与传入参数匹配OrderByIdDesc:排序规则,指定按id字段倒序排列
可选替代实现
注解自定义查询
如果偏好显式写查询语句,可以用@Query注解实现:
@Query(value = "SELECT * FROM 你的表名 WHERE investee_id = ?1 ORDER BY id DESC LIMIT 4", nativeQuery = true) List<实体类> findTop4InvesteeRecords(Long investeeId);
动态条数实现
如果返回条数需要动态调整,无需修改方法定义,可以使用分页参数实现:
// 方法定义 List<实体类> findByInvesteeIdOrderByIdDesc(Long investeeId, Pageable pageable); // 调用时传入参数获取前4条 repository.findByInvesteeIdOrderByIdDesc(investeeId, PageRequest.of(0, 4));
内容的提问来源于stack exchange,提问作者Roza Rysbekova
相关产品推荐
相关产品推荐

