我有这个 Grails 2.0.3 项目,其中有两个模型DomainA
和DomainB
,并且两者都通过many-to-many
关系相互关联,其中DomainB
是DomainA
的子级。
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
}