我有一个完全映射在Grails中的外键关系,比方说:
class Hero {
Long id
String name
Long experience
Pet pet
.....
}
class Pet {
Long id
String name
Long ownerId
.....
}
让我们说我想查询所有Hero
,他们将Pet
命名为“Hiccup”。所以我将对Hero
类执行查询:
def matching = Hero.findAll {
ilike('pet.name', '%Hiccup%')
}
它有效!问题是如何根据List
的{{1}}列对返回的Pet
进行排序?我试过了:
Name
但它返回错误:
def matching = Hero.findAll {
ilike('pet.name', '%Hiccup%')
orderBy('pet.name', 'asc')
}
谢谢。
答案 0 :(得分:1)
试试这个:
def matching = Hero.withCriteria {
pet {
ilike('name', '%Hiccup%')
orderBy('name', 'asc')
}
}
或者相反:
def matching = Pet.withCriteria {
projections {
property('hero')
}
ilike('name', '%Hiccup%')
orderBy('name', 'asc')
}
但这只适用于宣布宠物< - >英雄与grails命令的关系。我不知道这是一对一/一对多
它应该是这样的(一对一):
class Hero {
Long id
String name
Long experience
static hasOne = [pet:Pet]
.....
}
class Pet {
Long id
String name
Long ownerId
.....
static belongsTo = [hero:Hero]
}