2014-05-09 19 views
2

我想在我的領域類中寫公式,這有助於我創建標準。如何在grails域類中設置公式?

class MyClass { 
    //some fields 
    Date appointmentTime 
    String ddmmyy 
    int year 
    int month 
    int day 
    static transients = [ 
     'ddmmyy', 
     'year', 
     'month', 
     'day' 
    ] 
    static mapping= { 
     ddmmyy formula('DATE_FORMAT(appointmentTime)') 
     year formula('YEAR(appointmentTime)') 
     month formula('MONTH(appointmentTime)') 
     day formula('DAYOFMONTH(appointmentTime)') 
    } 
} 

每當我想在我的標準來使用這個領域,它拋出的錯誤,即無法解決財產的「MyClass的」日月年'。

MyCriteria是:

Date myDate = Calender.instance.time 

def results = MyClass.createcriteria().list{ 
    lt('appointmentTime', date+1) 
    ge('appointmentTime', date) 
    projections { 
     groupProperty('ddmmyy') 
     count('id') 
    } 
} 

任何想法,爲什麼我得到這個例外?

+0

注意的是,在ORM DSL所表達的公式是SQL所以其他屬性引用應該涉及到的持久化模型不是對象模型,這就是爲什麼例子是錯誤之處在於它是指預約時間而不是APPOINTMENT_TIME –

回答

2

您需要使這些字段在標準中不是瞬態的。見參考文獻

http://www.grails.org/doc/latest/guide/GORM.html#5.5.2.11%20Derived%20Properties

+0

你的意思是這個字段將會與數據庫保持一致嗎? – sanghavi7

+1

派生屬性不會持續存在,至少不會直接。請參閱http://grails.org/doc/latest/guide/GORM.html#derivedProperties。 –

+1

不,如果它是一個派生屬性,它不會是標準或動態查找器使用的非瞬態。 –