关联可以通过使用一个跟关联属性同名的节点来查询. 比如我们说 Account 类有关联到多个Transaction 对象:class Account {
…
def hasMany = [transactions:Transaction]
Set transactions
…
}
我们可以使用属性名 transaction 作为builder的一个节点来查询这个关联:def c = Account.createCriteria()
def now = new Date()
def results = c.list {
transactions {
between('date',now-10, now)
}
}
上面的代码将会查找所有过去10天内执行过 transactions 的 Account 实例. 你也可以在逻辑块中嵌套关联查询:def c = Account.createCriteria()
def now = new Date()
def results = c.list {
or {
between('created',now-10,now)
transactions {
between('date',now-10, now)
}
}
}
这里,我们将找出在最近10天内进行过交易或者最近10天内新创建的所有用户.