12

Grailsでバージョン管理ドメインクラスを作成しています:

class VersionControl {

    Date dateCreated
    Long versionNumber

    Long getLatestVersionNumber() {
        //return largest versionNumber
    }

}

保存されている最大のバージョン番号を取得するためのクエリを追加したいと思います。

Long getLatestVersionNumber()

SQLでは、このクエリは多かれ少なかれ次のようになります。

SELECT TOP 1 MAX(versionNumber) FROM VersionControl

関数は値をlongとして返さなければなりません(MUST)。

Grailsでこれを行う正しい方法は何ですか?

4

4 に答える 4

32

GORM基準を使用して、予測を使用してクエリを実行できます。

VersionControl.createCriteria().get {
    projections {
        max "versionNumber"
    }
} as Long
于 2012-10-08T14:11:58.330 に答える
6
VersionControl.executeQuery("select max(versionNumber) from VersionControl")

これは私にとって理解しやすいです。

于 2015-02-21T06:43:43.327 に答える
0

VersionControl.find( "from VersionControl vc max(vc.versionNumber)")

于 2012-10-08T14:08:48.883 に答える
0

クエリで最大値を計算するには、基準オプションが最適だと思います。

def maxVersion = VersionControl.withCriteria {
    projections{
        max 'versionNumber'
    }

}

groupby修飾子を追加する場合は、次のようにプロジェクションクロージャーに新しい行を追加するだけです。

VersionControl.withCriteria {
    projections{
        avg 'score'
        groupProperty 'channelId'
    }

}
于 2016-07-04T09:55:07.530 に答える