簡體   English   中英

如何向 Spring Data 中的條件添加多個 AND 條件

[英]How to add mulitple AND conditions to criteria in Spring Data

我正在嘗試向 Spring Data 中的條件添加多個“和”條件,但無法弄清楚我做錯了什么。 請參考以下代碼:

Criteria criteria = new Criteria();
        criteria.andOperator(Criteria.where("siteCode").is(siteCode));

        if(paymentMode != null) {
            criteria.andOperator(Criteria.where("paymentMode").is(paymentMode));
        }
        if(planCode != null) {
            criteria.andOperator(Criteria.where("packageCode").is(planCode));
        }
        if(status){
            criteria.andOperator(Criteria.where("expiryDateTime").gt(new Date()));
        } else {
            criteria.andOperator(Criteria.where("expiryDateTime").lte(new Date()));
        }

        Query query = new Query(criteria);

        List<UserPackage> userPackageList = mongoTemplate.find(query, UserPackage.class);

我發現我做錯了什么。 您不需要在內部使用方法“andOperator”和另一個 Criteria。

它只需使用“and”方法,然后鏈接您要使用的以下運算符方法即可。

分享工作解決方案以幫助像我這樣的其他新人。

        Criteria criteria = new Criteria();
        criteria = criteria.and("siteCode").is(siteCode);
        if (paymentMode != null) {
            criteria = criteria.and("paymentMode").is(paymentMode);
        }
        if (planCode != null) {
            criteria = criteria.and("packageCode").is(planCode);
        }
        if (status) {
            criteria = criteria.and("expiryDateTime").gt(new Date());
        } else {
            criteria = criteria.and("expiryDateTime").lte(new Date());
        }
        Query query = new Query(criteria);

以防萬一,如果您想為另一個字段之間的日期添加條件並匹配另一個字段,下面是我使用的。

    Criteria criteria = Criteria.where("date").gte(from).andOperator(Criteria.where("date").lt(to));

    if (StringUtils.isNotBlank(manager)) {
        criteria = criteria.and("manager").is(manager);
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM