如何使用SpringDataJPA中的规范获得最佳结果?
我对SpringDataJPA是相当陌生的。我试图在查询数据库时使用规范。我的问题是使用Crudepository方法,我们可以这样做:如何使用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
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(规范,可分页)?我想是的。试试看。