获取Grails中域的特定属性

时间:2016-02-17 15:37:43

标签: grails gorm

我正在制作一个表格清理服务,它将表名和日期字段作为参数,这里是服务代码:

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,因此如何从域中获取特定属性,例如名为Payments的域获得了一个属性dateCreated,因此我转到我的服务PaymentsdateCreated

1 个答案:

答案 0 :(得分:1)

使用查询,您可以访问条件查询方法,例如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")
}