Sql iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predica
iteria.getStatus()); add(criteriaBuilder.and(predicateForNum,predicateForStatus)); } 谓词finalPredicate=criteriaBuilder.or(predicates.toArray(新谓词[predicates.size()]); criteriaQuery.where(最终预测); 返回entityManager.createQuery(criteriaQuery.getResultList(); }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();
_____________________
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();
}