我有 2 个域类,项目和制造商。制造商有一个属性,用于在项目即将到期时警告用户(其日期存储为 Joda DateTime 对象)。相关字段是这样设置的。
class Manufacturer {
Integer expirationWarning
static hasMany = [items: Item]
}
和
class Item {
DateTime expirationDate
static belongsTo = [manufacturer: Manufacturer]
}
我正在尝试创建一个项目列表,其中到期时间介于现在和现在之间的某个时间加上 expirationWarning 天数。我已经让查询在 MySQL 终端中正常工作。
SELECT i.id FROM items as i
LEFT JOIN (manufacturer as m) ON (m.id = i.manufacturer_id)
WHERE i.expiration_date <= DATE_ADD(current_date, INTERVAL m.expiration_warning DAY);
现在我只需要在 Grails 中执行相同的查询。我知道 createCriteria 看起来像这样:
def itemsExpiringSoon = Item.createCriteria().list(max: listMax, offset: params.offset) {
createAlias('manufacturer', 'm', CriteriaSpecification.LEFT_JOIN)
le('expirationDate', new DateTime().plusDays('m.expirationWarning'))
order('expirationDate', 'desc')
}
但我不知道用什么来代替“m.expirationWarning”才能在 DateTime.plusDays() 中使用该字段的值。任何有关这方面的指导都会非常有帮助。