Sql iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predica

Sql iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predica,sql,jpa,spring-data-jpa,spring-data,Sql,Jpa,Spring Data Jpa,Spring Data,iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predicates.toArray(新谓词[predicates.size()]); criteriaQuery.where(最终预测); 返回entityManager.createQuery(criteriaQuery.getResultList();

iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predicates.toArray(新谓词[predicates.size()]); criteriaQuery.where(最终预测); 返回entityManager.createQuery(criteriaQuery.getResultList(); }
_____________________
Name    Status    Num
A       Good      6
B       Bad       6
C       Bad       7
@Entity
@Table(name = "table_name")
public class TableName {

  @Id
  @Basic(optional = false)
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name = "ID")
  private Long id;

  @Column(name = "name")
  private String name;
  @Column(name = "status")
  private String status;
  @Column(name = "num")
  private Integer num;

/**
* getters/setters, etc
**/

public interface TableNameRepository extends CrudRepository<TableName, Long> {

  @Query("select t from TableName t where (status = :status1 and num = :num1 or status = :status2 and num = :num2)")
  List<TableName> findByStatusAndNumOrStatusAndNum(@Param("status1") String status1,
      @Param("num1") Integer num1, @Param("status2") String status2, @Param("num2") Integer num2);
}
public interface TableNameRepository extends CrudRepository<TableName, Long> {
  List<TableName> findByStatusAndNumIn(String status, Collection<Integer> nums);
}

List<TableName> result = new ArrayList<>();

List<TableName> itemGood = findByStatusAndNumIn("Good", numsGood);
List<TableName> itemBad = findByStatusAndNumIn("Bad", numsBad);

result.addAll(itemGood);
result.addAll(itemBad);
    public List<YourTable> findMatching(List<CustomCriteria> customCriteriaList) {
        CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
        CriteriaQuery<YourTable> criteriaQuery = criteriaBuilder.createQuery(YourTable.class);
        Root<YourTable> itemRoot = criteriaQuery.from(YourTable.class);

        List<Predicate> predicates = new ArrayList<>(customCriteriaList.size());
        for (CustomCriteria customCriteria : customCriteriaList) {

            Predicate predicateForNum
                    = criteriaBuilder.equal(itemRoot.get("num"), customCriteria.getNum());
            Predicate predicateForStatus
                    = criteriaBuilder.equal(itemRoot.get("status"), customCriteria.getStatus());
            predicates.add(criteriaBuilder.and(predicateForNum, predicateForStatus));
        }

        Predicate finalPredicate = criteriaBuilder.or(predicates.toArray(new Predicate[predicates.size()]));
        criteriaQuery.where(finalPredicate);
        return entityManager.createQuery(criteriaQuery).getResultList();
    }