我有一个简单的一对多关联:
class Foo {
int id
Date someDate
static hasMany = [
bars: Bar
]
}
class Bar {
Foo foo
Date someDate
static mapping = {
.....
columns {
foo([:]) {
column name: "id"
}
}
}
}
在正常情况下,调用foo.bars将返回所有Bars,这很好。但在这种情况下,我需要使用someDate
参数进行查询。我需要急切地获取该集合,但我不知道该怎么做。我想做这样的事情:
Foo.withCriteria {
eq("id", someId)
bars {
eq("someDate", ?????)
}
}
我不确定要为这个价值投入什么,因为它不是提前知道的,或者是否有更好的方法可以做到这一点?
答案 0 :(得分:1)
过滤父类中的列表会非常混乱。如果您设法创建一个实例foo
,其中foo.bars
只有Bar
列表的子集,那么像foo.addToBars
之类的内容会有奇怪的行为,以及其他问题。< / p>
如果您只需要查找属于给定Bar
的{{1}}集合,并按其Foo
属性进行过滤,则应该查询someDate
开始的课程:
Bar
或:
Bar.findAllByFooAndSomeDate(foo, dateVal)
Bar.findAllByFooAndSomeDateBetween(foo, startDate, endDate)
等