标题本身就是问题。我有这个Grails Domain类。

class IonicBond {
    ...

    static hasMany = [
        typeIIs: TypeII,
        typeRs: TypeR,
    ]

    static constraints = {
        typeIIs nullable: true
        typeRs nullable: true
    }
}

我需要根据IonicBond属性查询hasMany实例。像这样:
ArrayList<IonicBond> list = IonicBond.createCriteria().list {
    or {
        typeIIs {
            eq("classCode", "WD996")
        }
        typeRs {
            eq("classCode", "WD996")
        }
    }
}

我需要对此语句做一些查询:“获取所有IonicBond,其中TypeII子级或TypeR子级classCode之一等于'WD996'”。问题在于该查询仅在IonicBond实例同时具有TypeIITypeR子级的情况下才有效。它不包括:
  • IonicBond,其TypeR子级的class值为“WD996”,但没有TypeII子级。
  • IonicBond,其TypeII子级的class值为“WD996”,但没有TypeR子级。

  • 如何将其包括在结果集中?

    最佳答案

    试试这个解决方案:

    ArrayList<IonicBond> list = IonicBond.where { typeRs { classCode == "WD996" } || typeIIs { classCode == "WD996" } }.list()
    

    10-08 14:29