有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用条件的java查询

如何使用条件编写以下查询

StringBuilder queryString = new StringBuilder("from BorrowerEvaluationDTO b where b.hasEvaluation = TRUE"+" ");
                if(sector != null && !sector.trim().equals("")){
                    queryString.append (" AND b.sector = '" + sector + "'");
                }
queryString.append(" AND b.id in (select needProfile.id from Investment where investor.id = '"+investorId + "')");

共 (1) 个答案

  1. # 1 楼答案

    我不确定您的模型具体是什么样子,但我认为您的查询或多或少会是这样的:

            CriteriaBuilder cb = em.getCriteriaBuilder();
            CriteriaQuery<Object> criteria = cb.createQuery(Object.class);
            Root<Object> root = criteria.from(Object.class);
            List<Predicate> predicates = new ArrayList<Predicate>();
            predicates.add(cb.equal(root.get("hasEvaluation"), cb.literal(true)));
    
            if (sector != null && !sector.trim().equals("")) {
                predicates.add(cb.equal(root.get("hasEvaluation"),
                        cb.literal(sector)));
    
            }
            Subquery<Object> sub = criteria.subquery(Object.class);
            Root<Object> subRoot = sub.from(Object.class);
            sub.select(subRoot.get("needProfile").get("id"));
            sub.where(cb.equal(subRoot.get("investor").get("id"), investorId));
            predicates.add(root.get("needProfile").in(sub));
    
            criteria.where(predicates.toArray(new Predicate[predicates.size()]));