我通常不直接执行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