grails createCriteria 用于日期计算

grails createCriteria for date calculation

我正在尝试使用 criteria

从数据库中获取数据

Domain class发票-

class Invoice{
    Date invoiceNo
    Date invoiceDate
    int interval

    static constraints = { }
    }
来自 controller

criteria 模块

if(!params.sort && !params.order) {
            params.sort = "invoiceDate + interval" //invoiceDate+ interval
            params.order = "asc"
        }
        def c = Invoice.createCriteria()
        def results = c.list(params) {
            between("invoiceDate+ interval", invoiceDate, invoiceDate+ interval)

        }

我想根据 invoiceDate & interval 计算 dueDate

我想要这样的结果

invoiceNo | invoiceDate | interval| dueDate    |
001       | 2016-09-30  | 5       | 2016-10-05 |
002       | 2016-09-15  | 5       | 2016-09-20 |

我会坚持要求您修改 Domain class 以添加 derived field,如下所示。

已修改 Domain class - 添加派生字段 dueDate

class Invoice{
Date invoiceNo
Date invoiceDate
int interval

//new field added
Date dueDate //Derived filed- will not persisted to the database

static mapping = {
   //formula to calculate dueDate (invoiceDate + interval)
    dueDate formula:"ADDDATE(invoice_date, interval)"
}

static constraints = { }
}

criteria 代码片段 - 获取 dueDate 介于 current Datecurrent Date + 7 之间的发票。

def criteria = Invoice.createCriteria()

   Date currentDate =  new Date()

   //fetching data based on the criteria
   List invoiceList = criteria.list {
         between('dueDate', currentDate, (currentDate + 7))
     }