我正在Grails中创建一个版本控制域类:
class VersionControl {
Date dateCreated
Long versionNumber
Long getLatestVersionNumber() {
//return largest versionNumber
}
}
我想添加一个查询来获取存储的最大版本号:
Long getLatestVersionNumber()
在SQL中,这个查询看起来或多或少如下:
SELECT TOP 1 MAX(versionNumber) FROM VersionControl
函数必须将值返回为long。
在Grails中执行此操作的正确方法是什么?
答案 0 :(得分:29)
您可以使用GORM criteria,查询投影:
VersionControl.createCriteria().get {
projections {
max "versionNumber"
}
} as Long
答案 1 :(得分:5)
VersionControl.executeQuery("select max(versionNumber) from VersionControl")
这让我更容易理解。
答案 2 :(得分:0)
VersionControl.find(“from VersionControl vc max(vc.versionNumber)”)
答案 3 :(得分:0)
要在查询中计算最大值,我认为最好的是条件选项:
def maxVersion = VersionControl.withCriteria {
projections{
max 'versionNumber'
}
}
如果要添加groupby修饰符,只需在投影闭包中添加一个新行,如下所示:
VersionControl.withCriteria {
projections{
avg 'score'
groupProperty 'channelId'
}
}