>source

Postgres 명령 이것은 Java로 기준 쿼리를 작성하려는 내 postgres sql 명령입니다.

SELECT DATASUMMAR0_.DSE_ID AS DSE_ID1_14_, DATASUMMAR0_.DSE_CONFIRMED AS DSE_CONF2_14_, DATASUMMAR0_.DSE_CREATED_BY AS DSE_CREA3_14_, DATASUMMAR0_.DSE_CREATED_DATE_TIME AS DSE_CREA4_14_, DATASUMMAR0_.DSE_DATE_TIME_RECEIVED AS DSE_DATE5_14_, DATASUMMAR0_.DSE_FLAGGED AS DSE_FLAG6_14_, DATASUMMAR0_.DSE_FROM_ADDRESS AS DSE_FROM7_14_, DATASUMMAR0_.DSE_METADATA AS DSE_META8_14_, DATASUMMAR0_.DSE_MODIFIED_BY AS DSE_MODI9_14_, DATASUMMAR0_.DSE_MODIFIED_DATE_TIME AS DSE_MOD10_14_, DATASUMMAR0_.DSE_SEG_GROUP AS DSE_SEG11_14_, DATASUMMAR0_.DSE_SENDER_NAME AS DSE_SEN12_14_, DATASUMMAR0_.DSE_SOURCE_TOKEN AS DSE_SOU13_14_, DATASUMMAR0_.DSE_WORKFLOW_REF AS DSE_WOR14_14_, DATASUMMAR0_1_.DATA_SNT_ID AS DATA_SNT1_22_ FROM DATA_SUMMARY DATASUMMAR0_ LEFT OUTER JOIN DATA_SUMMARY_DATA_SENTIMENT_DETAIL_BRIDGE DATASUMMAR0_1_ ON DATASUMMAR0_.DSE_ID= DATASUMMAR0_1_.DSE_ID INNER JOIN DATA_SUMMARY_DATA_DETAIL_BRIDGE DATAENTITI1_ ON DATASUMMAR0_.DSE_ID= DATAENTITI1_.DSE_ID INNER JOIN DATA_DETAIL DATAENTITY2_ ON DATAENTITI1_.DATA_ID= DATAENTITY2_.DATA_ID INNER JOIN DATA_SUMMARY_DATA_INTENT_DETAIL_BRIDGE DATAINTENT3_ ON DATASUMMAR0_.DSE_ID= DATAINTENT3_.DSE_ID INNER JOIN DATA_INTENT_DETAIL DATAINTENT4_ ON DATAINTENT3_.DATA_INTENT_ID= DATAINTENT4_.DATA_INTENT_ID WHERE (DATASUMMAR0_.DSE_ID in (1000000005, 1000000002, 1000000001, 1000000004, 1000000006, 1000000003, 1000000007)) AND DATASUMMAR0_.DSE_CONFIRMED= false ORDER BY dataintent4_.data_intent_code='initTransfer',dataintent4_.data_intent_code='changeAddress'

내 현재 기준 쿼리 이것은 제가 작성한 것입니다.

public List<DataSummaryEntity> findByCriteria(
            StatusType status,
            List<DataConfirmationType> processes,
            Integer startRange,
            Integer maxResults,
            SortCriteria sortCriteria,
            SearchCriteria searchCriteria) {
        List<String> intentClsCodeList= new ArrayList<String>();
        if (sortCriteria.getIntentCode() != null) {
            intentClsCodeList= Arrays.asList(sortCriteria.getIntentCode().split(","));
        }
        CriteriaBuilder criteriaBuilder= em.getCriteriaBuilder();
        CriteriaQuery<DataSummaryEntity> criteriaQuery=
                criteriaBuilder.createQuery(DataSummaryEntity.class);
        Root<DataSummaryEntity> dataSummaryRoot= criteriaQuery.from(DataSummaryEntity.class);
        Join<DataSummaryEntity, DataEntity> dataEntityRoot=
                dataSummaryRoot.join("dataEntities", JoinType.INNER);
        TypedQuery<DataSummaryEntity> query;
        List<Predicate> criteria= new ArrayList<>();
        List<Order> orderList= new ArrayList<>();
        criteria.add(dataSummaryRoot.get("dseId").in(getAllIdsByProcess(processes)));
        if (searchCriteria.getFromDate() != null &amp;
&amp;
 searchCriteria.getToDate() != null) {
            criteria.add(
                    criteriaBuilder.between(
                            dataSummaryRoot.get("dseCreatedDateTime"),
                            searchCriteria.getFromDate(),
                            searchCriteria.getToDate()));
        }
        if (searchCriteria.getIntentClass() != null) {
            criteria.add(
                    criteriaBuilder.equal(
                            dataSummaryRoot.join("dataIntentEntities").get("dataIntentCode"),
                            searchCriteria.getIntentClass()));
        }
        if (searchCriteria.getSegGroup() != null) {
            criteria.add(
                    criteriaBuilder.equal(dataSummaryRoot.get("dseSegGroup"), searchCriteria.getSegGroup()));
        }
        if (searchCriteria.getSearchText() != null) {
            if (searchCriteria.getSearchText() != null &amp;
&amp;
 !searchCriteria.getSearchText().isEmpty()) {
                String searchParameter= "%" + StringUtils.lowerCase(searchCriteria.getSearchText()) + "%";
                Predicate subject=
                        criteriaBuilder.like(
                                criteriaBuilder.lower(dataEntityRoot.get("dataSubject")).as(String.class),
                                searchParameter);
                Predicate body=
                        criteriaBuilder.like(
                                criteriaBuilder.lower(dataEntityRoot.get("dataBody")).as(String.class),
                                searchParameter);
                criteria.add(criteriaBuilder.or(subject, body));
            }
        }
        if (searchCriteria.getProcessor() != null) {
            criteria.add(
                    criteriaBuilder.equal(
                            dataSummaryRoot.get("dseModifiedBy"), searchCriteria.getProcessor()));
        }
        if (searchCriteria.getSentiment() != null) {
            criteria.add(
                    criteriaBuilder.equal(
                            dataSummaryRoot.get("dataSentimentEntity").get("dataSntTag"),
                            searchCriteria.getSentiment()));
        }
        if (status != null) {
            criteria.add(
                    criteriaBuilder.equal(
                            dataSummaryRoot.get("dseConfirmed"),
                            status.getCode().equals(StatusType.PROCESSED.getCode())));
        }
        if (criteria.size()== 1) {
            criteriaQuery.where(criteria.get(0));
        } else {
            criteriaQuery.where(criteriaBuilder.and(criteria.toArray(new Predicate[0])));
        }
        Expression<Integer> ord= criteriaBuilder.function(
                "CASE",
                Integer.class,
                dataSummaryRoot.join("dataIntentEntities").get("dataIntentCode"),
                criteriaBuilder.literal("changeAddress"),
                criteriaBuilder.literal("initTransfer")
        );
        OrderByField order= new OrderByField(ord);
        //intentClsCodeList.forEach(intent-> {
        //orderList..
        //});
        criteriaQuery.orderBy(criteriaBuilder.asc(criteriaBuilder.equal(dataSummaryRoot.join("dataIntentEntities").get("dataIntentCode"),"changeAddress")));
        if (maxResults != null) {
            query=
                    startRange != null
                            ? em.createQuery(criteriaQuery).setFirstResult(startRange).setMaxResults(maxResults)
                            : em.createQuery(criteriaQuery).setMaxResults(maxResults);
        } else {
            query= em.createQuery(criteriaQuery);
        }
return query.getResultList();
}

이 code는 결과 집합을 추출할 수 없다는 오류를 제공합니다. dataintent4_.data_intent_code='initTransfer',dataintent4_.data_intent_code='changeAddress'를 가져올 수 있도록 order by를 작성하려면 어떻게 해야 하나요?

기록이 저장되는 테이블입니다.

누군가 내가 그런 방식으로 주문하기 위해 criteriQuery를 작성하는 방법을 알려주실 수 있습니까?

Hari Krishna2022-01-15 18:30:14

당신이 묻는 것을 이해하지 못합니다. 죄송합니다.

Stephen C2022-01-15 18:30:14

안녕하세요, stephen, 저는 postgresQL에 이 명령이 있고 이에 대한 기준 쿼리를 micronaut에서 작성하고 싶습니다.

Hari Krishna2022-01-15 18:30:14

그래서 ... 질문을 수정하여 질문을 명확하게 하십시오. 처음부터 명확한 질문을 작성하는 것은 어렵지 않습니다.

Stephen C2022-01-15 18:30:14

또한 ... 스스로 문제를 해결하려는 시도를 추가하십시오. 나는 당신이 ... 그리고 당신은 StackOverflow를 무료 code 작성 서비스로 취급하지 않는다고 가정합니다 ...

Stephen C2022-01-15 18:30:14
  • 이전 python : 변수를 바꾸지 않고 jinja2 템플릿을 로드할 수 있습니까?
  • 다음 swift : 2차 관계인 엔터티를 가져오기 위해 속성을 가져왔습니다.