我通常不直接执行 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
然后查看打印标准输出的位置,然后您应该看到:
Andrew
Brandon
Cathy
Lisa
Walter
可能有一些更好的方法来做这件事的某些部分,但这是我能想到的……