我正在制作一个表格清理服务,它将表名和日期字段作为参数,这里是服务代码:
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
,因此我转到我的服务Payments
和dateCreated
。
答案 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")
}