在一对多关联中按 属性 排序
Sort by property in one-to-many association
我有以下场景(域 类)
class Request {
String title
List statusUpdates
static hasMany = [statusUpdates: StatusUpdate]
}
和
class StatusUpdate {
Date dateCreated
String statusFrom
String statusTo
String notes
static belongsTo = Request
}
我目前正在使用 createCriteria
来实现请求的过滤和基本排序。
现在我想获得一个 Request
的列表,从最近更新的开始(按 last
StatusUpdate
的字段 dateCreated
的值排序)对于 Request
)
有什么提示吗?
您可以使用 Comparator 或 Comparable 接口。
这里有一个很好的例子
link
假设每个 Request 至少有一个 StatusUpdate 并且稍微改变 belongsTo 声明,你可以换个方向:
class StatusUpdate {
Date dateCreated
String statusFrom
String statusTo
String notes
static belongsTo = [req: Request] // I assume that naming the field "request" would cause whole bunch of weird problems, therefore "req"
}
StatusUpdate.createCriteria().list() {
req {
// your criteria for requests filtering
}
projections {
groupProperty 'req', 'reqAlias'
max 'dateCreated', 'maxDateCreatedAlias'
}
order 'maxDateCreatedAlias', 'desc'
}.collect { it[0] }
我有以下场景(域 类)
class Request {
String title
List statusUpdates
static hasMany = [statusUpdates: StatusUpdate]
}
和
class StatusUpdate {
Date dateCreated
String statusFrom
String statusTo
String notes
static belongsTo = Request
}
我目前正在使用 createCriteria
来实现请求的过滤和基本排序。
现在我想获得一个 Request
的列表,从最近更新的开始(按 last
StatusUpdate
的字段 dateCreated
的值排序)对于 Request
)
有什么提示吗?
您可以使用 Comparator 或 Comparable 接口。 这里有一个很好的例子 link
假设每个 Request 至少有一个 StatusUpdate 并且稍微改变 belongsTo 声明,你可以换个方向:
class StatusUpdate {
Date dateCreated
String statusFrom
String statusTo
String notes
static belongsTo = [req: Request] // I assume that naming the field "request" would cause whole bunch of weird problems, therefore "req"
}
StatusUpdate.createCriteria().list() {
req {
// your criteria for requests filtering
}
projections {
groupProperty 'req', 'reqAlias'
max 'dateCreated', 'maxDateCreatedAlias'
}
order 'maxDateCreatedAlias', 'desc'
}.collect { it[0] }