JPA拼接子查詢語句


public static Specification<CatDomain> listAdvanceSpec() {
        return (Root<CatDomain> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {
           
      //創建主查詢條件對象('where'后的語句對象)
      Predicate predicate = cb.conjunction();
      //創建子查詢對象subQuery Subquery subQuery = query.subquery(String.class);
      //創建"實體類Hobby"的root對象

      Subquery subQuery = query.subquery(String.class);
      Root from = subQuery.from(IntentionRecord.class);
//創建子查詢條件對象('where'后的語句對象)
      Predicate predicate1 = cb.conjunction();
predicate1 = cb.and(predicate1,cb.greaterThanOrEqualTo(from.get("createTime"), newDate2));
predicate1 = cb.and(predicate1,cb.equal(from.get("schoolId"), dto.getSchoolId()));
      //完成子查詢
subQuery.select(from.get("studentId")).where(predicate1);
    //把子查詢結果拼接到原查詢語句后面---這里是id not in的寫法
       predicate = cb.and(predicate, cb.not(cb.in(root.get("id")).value(subQuery)));
      //id in的寫法

     
predicate = cb.and(predicate, cb.in(root.get("id")).value(subQuery));
      //id equals的寫法      
      
, cb.equal(root.get("id"),"123"));                        }; }

 




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM