我有两个具有简单的一对多关系的域类(一个Gift可以有很多GiftInstance),如下所示。我希望检索给定用户的所有GiftInstances(以及可能的其他条件),但是根据与每个GiftInstance相关联的Gift的“过期”属性对结果进行排序。我怎么做到这一点?我宁愿呆在Grails(动态查找器,Criteria等)的范围内,也不必执行原始SQL
class Gift {
String name;
String description;
Date expires;
}
class GiftInstance {
static belongsTo = [gift: Gift]
User user;
... other fields ...
}
答案 0 :(得分:1)
您可以通过mapping in your domain class以两种方式执行此操作。
在Gift类中设置排序和顺序,如下所示:
class Gift {
String name;
String description;
Date expires;
static hasMany = [giftInstances: GiftInstance]
static mapping = {
giftInstances sort: "expired"
}
}
或在您的GiftInstance域类中。
class GiftInstance {
static belongsTo = [gift: Gift]
User user
boolean expired
static mapping = {
sort: "expired"
}
}
是的,您也可以设置订单。
答案 1 :(得分:0)
您可以在GiftInstance
中添加命名查询
class GiftInstance {
static namedQueries = {
giftInstanceByUser { user ->
eq 'user', user
order 'gift.expires', 'asc'
}
}
}