为 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
,所以我传递给我的服务 Payments
和 dateCreated
.
通过 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")
}
我正在制作一个 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
,所以我传递给我的服务 Payments
和 dateCreated
.
通过 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")
}