将顶部与参数列表一起使用



我有这个弹簧数据存储库方法

public FileActivity findTopByFileIDOrderByCreatedDesc(String fileID);

这工作正常.但是我如何使它适用于参数列表?

这不起作用(我可以有很多文件 ID 的文件活动 - 但我只想要最后一个):

public List<FileActivity> findTopByFileIDOrderByCreatedDesc(List<String> fileIDs);

Spring Data 对派生查询的支持很有用,但对于简单查询以外的任何内容,定义自己的 JPQL 查询可能更容易、更清晰。

@Query("select f from File f where f.id in :fileIds order by f.created desc")
public Page<FileActivity> findTopFilesById(
                             @Param("fileIDs") List<String> fileIDs, Pageable pageable);

由于JPQL没有限制关键字,因此您可以简单地传入页面。

List<String> fileIds = //;
Page<File> page = repository.findTopFilesById(fileIds, new PageRequest(0, fileIds.size());
List<File> files = page.getContent();

您还可以在PageRequest中动态指定排序顺序,而不是在JPQL中,从而提供更大的灵活性:

https://docs.spring.io/spring-data/commons/docs/current/api/org/springframework/data/domain/PageRequest.html

public FileActivity findTopByFileIDInOrderByCreatedDesc(Collection<String> fileIDs);

在此处查看更多示例

注意 - 如果您使用"顶部",那么您只会获得一条记录。要获得多个记录,您必须在"Top"中添加一个数字,例如:"Top10"。

更多信息在这里

最新更新