3 回答

TA貢獻1786條經驗 獲得超13個贊
方法聲明:
public List<XrayVulnerabilityEntity> findAll(Specification<XrayVulnerabilityEntity> spec, Pageable pageable);
執行:
Specification specification = new Specification<XrayVulnerabilityEntity>() {
@Override
public Predicate toPredicate(Root<XrayVulnerabilityEntity> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
predicates.add(criteriaBuilder.equal(
root.join("domainArtifactId").get("id"), root.get("id")));
predicates.add(criteriaBuilder.and(
root.get("domainArtifactId").get("domainOrgName"), "domainOrgNameString"));
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};
Pageable page = PageRequest.of(0, 5, new Sort(Sort.Direction.ASC, "id") );
List<XrayVulnerabilityEntity> xrayVulnerabilityEntitylists = xrayVulnerabilityEntityRepo.findAll(specification, page);

TA貢獻1811條經驗 獲得超5個贊
我像這里一樣解決了這個問題;
@PostMapping(value = "/search")
public List<Customer> search(@RequestBody List<SearchCriteriaRequest> criteriaRequest, Pageable page) {
if (criteriaRequest == null || criteriaRequest.size() == 0) {
return null;
}
SpecificationsBuilder builder = new SpecificationsBuilder();
for (SearchCriteriaRequest criteria : criteriaRequest) {
builder.with(criteria);
}
Specification<Customer> spec = builder.build();
return customerRepository.findAll(spec, page).getContent();
}

TA貢獻2080條經驗 獲得超4個贊
在此查詢中:
@Query("SELECT COUNT(x) FROM XrayVulnerabilityEntity x,DomainArtifactEntity d WHERE d.domainOrgName=:domainOrgNameParam AND x.domainArtifactId=d")
public Long getCount(@Param(value = "domainOrgNameParam") String domainOrgName,Specification<XrayVulnerabilityEntity> spec);
您正在引用一個參數:domainOrgNameParam,但在方法參數中找不到該參數。如果您使用Specifications,您應該在那里定義所有內容并避免傳遞額外的參數。
添加回答
舉報