簡體   English   中英

Grails休眠創建條件多個AND OR條件

[英]Grails hibernate create criteria multiple AND OR Conditions

我能夠使用grails / Hibernate create Criteria進行3個條件查詢,如下所示

 def c = Domain.createCriteria()

    c.list(max: map.max ?: 10, offset: map.offset ?: 0) {

            and {
                "colStatus" in status
                "code" in codes
            }
            and {
                or {
                    ilike("pCode", pCode)
                    ilike("pDesc", pCode)
                }
            }

        order("DateCol3", "desc")
    }

現在,我有3個附加條件,它們具有內部OR條件,我需要將它們添加到查詢中。 我嘗試跟隨沒有成功

 def c = Domain.createCriteria()

    c.list(max: map.max ?: 10, offset: map.offset ?: 0) {

            and {
                "colStatus" in status
                "code" in codes
            }
            and {
                or {
                    ilike("pCode", pCode)
                    ilike("pDesc", pCode)
                }
            }

            and {
                or {
                    ilike("eCode", eCode)
                    ilike("eDesc", eCode)
                }
            }

            and {
                or {
                    ilike("oCode", oCode)
                    ilike("oDesc", oCode)
                }
            }

        order("DateCol3", "desc")
    }

請提出建議並幫助我,我應該如何將多個AND / OR條件加起來。

我能夠通過引入括號來解決此問題

def c = Domain.createCriteria()

c.list(max: map.max ?: 10, offset: map.offset ?: 0) {

        {
            "colStatus" in status
            "code" in codes
        }
        ( {
            or {
                ilike("pCode", pCode)
                ilike("pDesc", pCode)
            }
        }
      )
      (
       {
            or {
                ilike("eCode", eCode)
                ilike("eDesc", eCode)
            }
        }
      )
      (  and {
            or {
                ilike("oCode", oCode)
                ilike("oDesc", oCode)
            }
        }
      )
    order("DateCol3", "desc")
}

暫無
暫無

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

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