私はdate-propertyを持つドメインクラスを持っています。Grailsグループの日付順
class Transaction {
LocalDate time
BigDecimal amount
}
月ごとにグループ化されたすべてのトランザクションの合計を照会するにはどうすればよいですか?私はGORMの日付範囲でグループのサポートを見つけることができません。
私はdate-propertyを持つドメインクラスを持っています。Grailsグループの日付順
class Transaction {
LocalDate time
BigDecimal amount
}
月ごとにグループ化されたすべてのトランザクションの合計を照会するにはどうすればよいですか?私はGORMの日付範囲でグループのサポートを見つけることができません。
切り捨て日のためにあなたのドメインクラスに数式ベースのフィールドを追加します。
class Transaction {
LocalTime time
BigDecimal amount
String timeMonth
static mapping = {
timeMonth formula: "FORMATDATETIME(time, 'yyyy-MM')" // h2 sql
//timeMonth formula: "DATE_FORMAT(time, '%Y-%m')" // mysql sql
}
}
を次にあなたがこのようなクエリを実行できるようになります:
Transaction.withCriteria {
projections {
sum('amount')
groupProperty('timeMonth')
}
}
注意:CamelCaseをドメインプロパティーに使用する場合は、SQL構文のフィールド名にアンダースコアを使用する必要があります。例えばdatePhotoTakenはdate_photo_takenになります – skurt
@timeMonthプロパティtimeMonthがdbにマップされるかどうかを確認します –
@Suganthanプロパティはdbにマップされませんが、検証エラーを回避するために制約に 'timeMonth nullable:true'を追加する必要があります。 –
を私はGORMを知りませんあなたのためにそれがOKならば、データベース固有の機能を使用することができます。私は今までMySQLのために 'GROUP BY MONTH(time)'を使ってきました。 – aiolos