我有这个spring数据存储库方法
public FileActivity findTopByFileIDOrderByCreatedDesc(String fileID);
这很好用。但是如何使其适用于参数列表?
这不起作用(文件ID可以有很多FileActivity - 但我只想要最后一个):
public List<FileActivity> findTopByFileIDOrderByCreatedDesc(List<String> fileIDs);
答案 0 :(得分:1)
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中指定排序顺序,从而提供更多灵活性:
答案 1 :(得分:0)