为 Grails 中的域获取特定的 属性

get a specific property for a domain in Grails

我正在制作一个 tables 清洁服务,它以 table 名称和日期字段作为参数,这里是服务代码:

def cleanTables(tableName , dateField) {
    def comparisonDate
    def numOfRecordsDeleted
    use (TimeCategory){
        comparisonDate=new Date() -1.year
        }
    numOfRecordsDeleted=tableName.where { dateField <=comparisonDate }.deleteAll()
    log.info("deleted : " +numOfRecordsDeleted)
}

我已成功将 table name 传递给此服务,但我无法传递 date field ,那么如何从域(例如域)中获取特定的 属性 named Payments 得到一个 属性 dateCreated ,所以我传递给我的服务 PaymentsdateCreated.

通过 where queries,您可以使用 criteria query 方法,例如 eq(),或者在这种情况下,le()。这些方法将 属性 的 name 作为参数,这正是您所需要的。我稍微调整了代码,因为您实际上是在与域 类 交互,而不是与表交互。小区别,直到您开始使用 HQL。

def cleanDomainClass(String domainClassName, String dateField) {
    def domainClass = Class.forName("some.package.$domainClassName")
    def comparisonDate = use (TimeCategory) { new Date() -1.year }
    def numOfRecordsDeleted = domainClass.where { le(dateField, comparisonDate) }.deleteAll()

    log.info("deleted : $numOfRecordsDeleted")
}