我正在研究jpa。我有一个要求是使用jpa获取最近5个最近插入的行,也没有重复
例如: 我有这样的表
例如:
id |userId| phnNum
---| ---- | -------
1 | 1 | 1234
2 | 1 | 3214
3 | 2 | 7899
4 | 3 | 6789
5 | 2 | 8899
6 | 4 | 6788
7 | 5 | 9874
现在我必须获取5条记录而不重复userId。
我试过这个
List<UserEntity> findFirst5ByOrderByIdDesc();
但它从数据库中提供的第一条记录不是最近的。我用Google搜索了jpa的最新记录。但是没有发现任何东西。 任何人都可以建议我如何解决这个问题。
提前致谢
答案 0 :(得分:0)
我不认为你可以用方法名称来解决这个问题。 尝试显式查询:
@Query("select u from User u
where u.id IN (select max(uu.id) from User uu where uu.userId = u.userId)
order by u.id desc")
List<UserEntity> findFirstNByOrderByIdDesc(Pageable pageable);
然后致电:
findFirstNByOrderByIdDesc(new PageRequest(0,5));
答案 1 :(得分:0)
我认为你正在寻找这个:
@Query("from UserEntity u group by u.userId order by u.id desc limit 5)
List<UserEntity> findFirst5ByOrderByIdDesc();
或者您可以通过以下参数传递限制:
@Query("from UserEntity u group by u.userId order by u.id desc limit = :limit)
List<UserEntity> findFirst5ByOrderByIdDesc(@Param("limit") Long limit);