我通常不直接執行SQL查詢,我只是用GORM來處理它們。
如果你可以設置你的域類作爲雙向關聯(不支持單向關聯),那麼你可以做這樣的事情:
class classA {
static constraints = {
}
static mapping = {
bList sort :'name', order:'asc'
}
static hasMany = [bList: classB]
}
現在B類:
class ClassB {
static constraints = {
}
static belongsTo = [classAInstance: classA]
String name
}
我將此添加到BootStrap.groovy
文件以添加一些實例:
class BootStrap {
def init = { servletContext ->
def a = new ClassA()
def b1 = new ClassB(name: 'Andrew')
def b2 = new ClassB(name: 'Lisa')
def b3 = new ClassB(name: 'Walter')
def b4 = new ClassB(name: 'Brandon')
def b5 = new ClassB(name: 'Cathy')
a.addToBList(b1)
a.addToBList(b2)
a.addToBList(b3)
a.addToBList(b4)
a.addToBList(b5)
a.save()
}
def destroy = {
}
}
然後,這是我用來測試它的控制器:
class TestController {
def index() {
def aInstance = ClassA.get(1)
def lst = aInstance.bList
lst.each { println it.name }
}
}
你應該能夠去http://localhost:8080/test/test/index
再看看以往標準輸出打印的地方,然後你shoue看到:
Andrew
Brandon
Cathy
Lisa
Walter
可能有一些更好的方法來做這個的某些部分,但這是我可以想到的我的頭頂...
謝謝,但不會產生一個ClassB的列表?我正在查找ClassA的列表,但是根據其最佳排名bList成員進行排序。 – buchan