kno*_*orv 16 grails grails-orm gsp
假设我已经使用GORM定义了一个User对象.每个用户可以拥有零个或多个Login:s.每个登录都有一个时间戳.检索user.logins时,我希望根据login.date的值对登录进行排序.什么是正确的Grails方法来实现这一目标?
示例:我希望以下代码按升序列出所有用户的登录名.
<g:each var="login" in="${user.logins}">
<tr>
<td>${login.date}</td>
</tr>
</g:each>
Run Code Online (Sandbox Code Playgroud)
这些是引用的类:
class User {
...
def hasMany = [logins: Login]
static fetchMode = [logins: "eager"]
}
class Login {
Date date
...
def belongsTo = [User]
}
Run Code Online (Sandbox Code Playgroud)
我正在运行Grails 1.0.4,这是最新的稳定版本.
小智 28
它们在参考指南(第5节)的GORM页面上展示了如何执行此操作.您想要的位于该文档底部附近的是您想要的部分.他们有两个简单的例子:
class Airport {
…
static mapping = {
sort "name"
}
}
class Airport {
…
static mapping = {
sort name:"desc"
}
}
Run Code Online (Sandbox Code Playgroud)
他们还有一个关联排序的例子:
class Airport {
…
static hasMany = [flights:Flight]
static mapping = {
flights sort:'number'
}
}
Run Code Online (Sandbox Code Playgroud)
Sie*_*uer 14
只需使Login Class实现Comparable接口:
class Login implements Comparable {
// ...
Date date
public int compareTo(def other) {
return date <=> other?.date // <=> is the compareTo operator in groovy
}
}
Run Code Online (Sandbox Code Playgroud)
并将该关系声明为SortedSet:
class User {
...
def hasMany = [logins: Login]
SortedSet logins
static fetchMode = [logins: "eager"]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22499 次 |
| 最近记录: |