如何使用Spring Data JPA中的规范获取顶部结果?

3

我是一名对Spring Data JPA不太熟悉的人。我正在尝试在数据库查询中使用规范(Specifications)。我的问题是,使用CrudRepository,我们可以像这样使用方法:

findTopByUsernameOrderByUpdatedAtDesc(String username);

我可以使用规范来实现相同的功能吗?我可以在规范中执行基本操作,如 and 或 or,但不像我们可以使用条件等工具那样非常强大。
Specification<CustomClass> spec = Specifications.where(specification).and(username);
List<CustomClass> list = findAll(spec);

1
删除有关要求教程和其他东西的部分,因为它会使一个本来不错的问题变得离题。 - Jens Schauder
实际上,我会对结果列表进行“排序”,这样你就可以在顶部获得你的结果。 - mrkernelpanic
你提出了不完整的信息,规范可以使用谓词和查询构建器来构建。 - AdamIJK
2个回答

3
这是这样完成的:

这样做的步骤如下:

 Pageable pageable = new PageRequest(0, 1, Sort.Direction.DESC, "username");
 Page oneElementPage = repository.findAll(spec, pageable);

这将按照用户名列的降序对数据进行排序并返回第一个结果。

1
你不能直接在规范中表达这个。但是你可以使用一个 Pageable 来实现这个功能:
Page oneElementPage = repository.findAll(spec, new PageRequest(0, 1));

提供一个只包含一个元素的 Page

这样可以吗:Pageable pageable = PageRequest(0, 1, Sort.Direction.DESC, "username"); 然后将其传递给findAll(spec,pageable);? - Nakul Kumar
试试看吧,我想是可行的。 - Jens Schauder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接