Java 在参数列表中使用top

Java 在参数列表中使用top,java,spring-data,spring-data-jpa,Java,Spring Data,Spring Data Jpa,我有这个spring数据存储库方法 public FileActivity findTopByFileIDOrderByCreatedDesc(String fileID); 这个很好用。但我如何使它适用于参数列表 这不起作用(对于文件id,我可以有许多FileActivity,但我只想要最后一个): 公共列表findTopByFileIDOrderByCreatedDesc(列表文件ID); 公共文件活动findtopbyfileidiorderbycreateddesc(集合文件ID);

我有这个spring数据存储库方法

public FileActivity findTopByFileIDOrderByCreatedDesc(String fileID);
这个很好用。但我如何使它适用于参数列表

这不起作用(对于文件id,我可以有许多FileActivity,但我只想要最后一个):

公共列表findTopByFileIDOrderByCreatedDesc(列表文件ID);
公共文件活动findtopbyfileidiorderbycreateddesc(集合文件ID);
请参阅更多示例

注意-如果使用“Top”,则只能获得一条记录。要获得多条记录,您必须在“Top”中添加一个数字,例如:“Top10”


更多信息

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);
@Query(“从文件f中选择f,其中f.id位于:文件id按f.created desc排序”)
公共页findTopFilesById(
@参数(“文件ID”)列出文件ID,可分页;
由于JPQL没有limit关键字,所以您可以简单地传入一个页面

List<String> fileIds = //;
Page<File> page = repository.findTopFilesById(fileIds, new PageRequest(0, fileIds.size());
List<File> files = page.getContent();
List fileid=/;
Page Page=repository.findTopFilesById(fileid,new PageRequest(0,fileid.size());
列表文件=page.getContent();
您还可以在PageRequest中动态指定排序顺序,而不是在JPQL中,从而提供更大的灵活性:


否,但我想得到一份列表作为回报,以及何时使用您的建议(将回报类型更改为列表后)无论我作为parametersok发送了多少ID,我在列表中只得到一条记录,但这不是一个常数。fileIDs参数在运行时当然会变化,结果列表必须与fileid大小相同size@user7916020你同意这完全是另一个问题吗?
@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);
List<String> fileIds = //;
Page<File> page = repository.findTopFilesById(fileIds, new PageRequest(0, fileIds.size());
List<File> files = page.getContent();