我有一个带有日期属性的域类。Grails按日期分组
class Transaction {
LocalDate time
BigDecimal amount
}
我如何可以查询按月分组的所有交易的总和?在GORM中,我无法通过日期范围找到任何支持。
我有一个带有日期属性的域类。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'以避免验证错误。 –
我不知道任何格姆具体的功能,但如果它适合你 - 你可以使用数据库特定的功能。到目前为止,我已经对MySQL使用了“GROUP BY MONTH(time)”。 – aiolos