GORM预先抓取集合随着标准
我有一个简单的一对多关联:GORM预先抓取集合随着标准
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将返回所有的酒吧,这是很好的。但在这种情况下,我需要使用someDate
参数进行查询。我需要热切地取回收藏,但我不知道如何做到这一点。我想要做这样的事情:
Foo.withCriteria {
eq("id", someId)
bars {
eq("someDate", ?????)
}
}
我不知道摆在了什么价值,虽然,因为它不是提前知道的,或者是否有更好的方法来做到这一点?
在父类中过滤列表会非常混乱。如果您设法创建foo
实例,其中foo.bars
只包含Bar
s列表的一个子集,但诸如foo.addToBars
之类的事情会出现奇怪的行为以及其他问题。
如果您只是需要找到一个属于给定Foo
,由他们someDate
属性过滤集Bar
S的,你应该询问对Bar
类开始:
Bar.findAllByFooAndSomeDate(foo, dateVal)
Bar.findAllByFooAndSomeDateBetween(foo, startDate, endDate)
或:
Bar.findAll() {
(foo.id == someId) && (someDate == dateVal)
}
等
查询还有很多内容,为简单起见我简化了它。我只是试图在单个查询中填充对象图表(如果可能的话),而不是为我需要的每个集合执行多个查询过滤。我只想要根据父对象的someDate属性获取该集合。但是,你的评论是有道理的,在列表中做事情会很奇怪。 – 2013-03-28 15:20:01
如果你正在填充一个复杂的图形,那么使用HQL和预测可能会更好。 – codelark 2013-03-28 15:23:19
你会把变量有??? – 2013-03-20 01:33:46
@JamesKleeh我想你错过了这个问题。我想通过PK和其他日期字段加入Bars和Foo。那么在哪里“?????”是的,我不知道该怎么做才能做到这一点。 – 2013-05-20 17:40:22