排序具有多种关系的类的对象

时间:2014-09-16 12:36:29

标签: grails gorm

我有这样的域名

class A{

String mainAddress
static hasMany = [Bs: B]
static mapping = {
 mainAddress formula: ('select ad.zip from B  ad where ad.a_id=id')
 }
}

Class B{
String zip
static belongsTo = [a: A]
}

let A1 ->B1
       ->B2
and A2 ->B3
       ->B4
    A3 ->B5
       ->B6
       etc..

现在我想根据邮政编码B1,B3,B5等进行排序

修改:我做了一些有问题的更改然后尝试访问

  a.mainAddress 

这给出了空

1 个答案:

答案 0 :(得分:1)

如果我理解你,你想要通过zip对B对象属于A对象进行排序,如果是这样,这段代码应该适用于你:

def a = .. instance of A object
def listOfB = a.Bs.sort{it.zip}

或者如果您想在数据库上对其进行排序:

您应该向您的B班http://grails.org/doc/2.4.3/ref/Database%20Mapping/sort.html添加另一个静态映射:

static mapping =
{
    sort "zip"
    // or
    sort zip : "asc" // or "desc"
}

该公式也应该是:

formula: '(select ad.zip from B  ad where ad.a_id=this.id)'

而不是:

formula: ('select ad.zip from B  ad where ad.a_id=id') 

因为您没有指定要获取的对象的ID。