是否有方法从查询中检索最后X个结果?
例如-如果想要前十个结果,我看到这里的示例有效:setMaxResults for Spring JPA注释?
public interface UserRepository extends Repository<User, Long> {
List<User> findByUsername(String username, Pageable pageable);
}
//and then I could call it like this
Pageable topTen = new PageRequest(0, 10);
List<User> result = repository.findByUsername("Matthews", topTen);但我怎么才能拿到最后十张唱片?
我能想到的唯一方法是翻转查询中的顺序(假设原始结果是升序的),然后向后遍历列表,这样我就可以按照我想要的顺序(升序)处理它。
这似乎是一种丑陋的做法。有没有办法让查询按我想要的顺序给出最后的X结果?
发布于 2014-06-05 20:16:29
问题是,这种选择的效率有多高,特别是针对大型数据集。
我将使用降序索引,可以使用maxResult支持进行查询,因为您已经知道了这一点。
这不可能是黑客。如果你要匹配100米的结果,只得到最后的X个结果,这个方法会得到最好的结果。
发布于 2014-10-24 17:15:54
Spring Data JPA 1.7在派生查询中引入了'top‘和'first’作为关键字,因此现在我们可以这样做:
public interface UserRepository extends Repository<User, Long> {
List<User> findFirst10ByUsername(String username);
}看看- 春季数据发布列车埃文斯去GA
发布于 2015-02-15 00:23:03
PageRequest可能对它非常有用。构建PageRequest有许多选项。
因此,一个可能的选择是:
Pageable topTen = new PageRequest(0, 10, Direction.ASC, "username");
List<User> result = repository.findByUsername("Matthews", topTen);我也使用没有参数(关于对象的条件)。
@Query(value="select p from Person p")
public List<Person> findWithPageable(Pageable pageable);然后打电话:
repository.findWithPageable(new PageRequest(0, 10, Direction.DESC, "id"));https://stackoverflow.com/questions/24068884
复制相似问题