我有这个 Grails 2.0.3 项目,其中有两个模型DomainADomainB,并且两者都通过many-to-many关系相互关联,其中DomainBDomainA的子级。

class DomainA {
  // properties
  static hasMany = [domains: DomainB]
}

class DomainB {
  // properties
  static hasMany = [domains: DomainA]
  static belongsTo = [DomainA]
}

鉴于这种设计,我想查询所有DomainB,其中在设置为DomainA的查询之后存在一个DomainA实例。
def domainsList = DomainA.createCriteria().list() {
   // other criterions for the other properties
}
DomainB.createCriteria().list() {
   inList("domains", domainsList)
   // other criterions for the other properties
}

执行上述代码时,出现错误提示ERROR util.JDBCExceptionReporter - Parameter #1 has not been set.,其中Parameter #1提示domains准则中的inList属性名称。

有这个问题,这可能解决吗?怎么样?

最佳答案

查看GORM guide,查找“查询关联”。我们宁愿尝试通过单个查询来完成所有操作。

有了新的“where”查询,

def query = DomainB.where {
  domains { someAField == 3 } && someBField == 8
}

或使用CriteriaBuilder:
DomainB.withCriteria {
  domains {
    eq 'someAField', 3
  }
  eq 'someBField', 8
}

10-08 13:14