我有下一个计划:
class UserProfile {
String title
String firstName
String lastName
static belongsTo = [user:User]
static constraints = {
user nullable:true , unique:true
title nullable:true, blank:true
firstName blank:false
lastName nullable:true, blank:true
}
}
class User {
String username
String password
boolean enabled
String email
static constraints = {
username size:6..40, blank:false, nullable: false, unique: true
email email:true, size:6..40, blank:false, nullable: false, unique: true
password size:5..64, password:true, blank:false, nullable: false
}
String toString(){username}
}
我需要一个由拥有该用户的电子邮件订购的UserProfile
列表!
我试试:
UserProfile.createCriteria().listDistinct({
if(params.orderBy){
if(params.orderBy=="email"){
//the exception says that the element has no such property to both cases
order("user.email", ascDesc)
//order("email", ascDesc)
}else{
order("${params.orderBy}", ascDesc)
}
}
})
因此,当我想通过电子邮件订购时,异常说该元素对两种情况都没有这样的属性。注意:ascDesc
是变量String
,可以是asc
或desc
答案 0 :(得分:1)
如果你添加
createAlias('user', 'u')
到标准结束的顶部,然后您应该可以按'u.email'
订购。
答案 1 :(得分:1)
if (params.orderBy == "email") {
user {
order ("email", ascDesc)
}
}
也可以在没有手动创建别名的情况下工作