Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SpringDataJPA中的规范获得最佳结果?_Spring_Spring Boot_Spring Data Jpa_Jpa Criteria - Fatal编程技术网

如何使用SpringDataJPA中的规范获得最佳结果?

如何使用SpringDataJPA中的规范获得最佳结果?,spring,spring-boot,spring-data-jpa,jpa-criteria,Spring,Spring Boot,Spring Data Jpa,Jpa Criteria,我对SpringDataJPA是相当陌生的。我试图在查询数据库时使用规范。我的问题是使用Crudepository方法,我们可以这样做: findTopByUsernameOrderByUpdatedAtDesc(String username); 如何使用规范实现相同的目标?我可以在规范中做一些基本的事情,比如and或or,但不像我们在标准中做的那样非常健壮 Specification<CustomClass> spec = Specifications.where(specif

我对SpringDataJPA是相当陌生的。我试图在查询数据库时使用规范。我的问题是使用Crudepository方法,我们可以这样做:

findTopByUsernameOrderByUpdatedAtDesc(String username);
如何使用规范实现相同的目标?我可以在规范中做一些基本的事情,比如and或or,但不像我们在标准中做的那样非常健壮

Specification<CustomClass> spec = Specifications.where(specification).and(username);
List<CustomClass> list = findAll(spec);
Specification spec=规格。其中(规格)和(用户名);
列表=findAll(规范);

您不能直接在
规范中表达这一点。但是您可以使用
可分页的

Page oneElementPage = repository.findAll(spec, new PageRequest(0, 1));

为您提供一个包含单个元素的
页面。

这是按如下方式完成的:

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

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

删除了关于询问教程和其他内容的部分,因为这是一个很好的离题问题。实际上,我会对结果列表进行排序,结果会排在第一位。你用一半的信息提问,可以使用谓词和查询生成器生成规范这是否合适:Pageable Pageable=PageRequest(0,1,Sort.Direction.DESC,“username”);然后把这个传给findAll(规范,可分页)?我想是的。试试看。