2013-03-25 62 views
1

我想是這樣的Grails的2.1 SQL來的Grails GORM查詢

'SELECT * FROM MyDomain WHERE endDate >= date AND startDate <= date' 

Now please give possible solution by this way 

def date = new Date().clearTime(), 
obj = MyDomain.find(....................) or 
obj = MyDomain.findWhere(....................) 

,但我不希望任何SQL或者HQL注入。任何人都可以幫助我,我想要GORM。道歉,我的英語不好

回答

1

使用標準在這種情況下,將

def myDomainList = MyDomain.withCriteria{ 
    def date = new Date().clearTime() 
    le('startDate', date) 
    ge('endDate', date) 
} 

請注意整改的最簡單方法: 查詢要求小於平等的,不是平等的更大,在這種情況下,「樂」和「閣」有在標準中使用。

AND也隱含在標準中。

+0

謝謝@Dmahapatro – 2013-03-27 06:10:59

1

您需要喲寫這個

def myDate = new Date().clearTime() 
obj = MyDomain.findAll("FROM MyDomain Where (:myDate) between startDate AND endDate", [myDate: myDate]) 

或者

obj = MyDomain.executeQuery("FROM MyDomain Where (:myDate) between startDate AND endDate", [myDate: myDate]) 

,如果你想要去的沒有SQL或者HQL然後再爲標準

obj = MyDomain.createCriteria().list{ 

     and{ 
      lt('startDate', myDate) 
      gt('endDate', myDate) 
     } 
} 

欲瞭解更多信息,您可以訪問此herehere

+1

我認爲它會( 「FROM MYDOMAIN凡(:指明MyDate)的startDate日期和結束日期之間」,[指明MyDate:指明MyDate]) 的obj = MyDomain.executeQuery因爲 *符號將捉錯 – 2013-03-25 09:53:43

+0

或 OBJ = MyDomain.executeQuery (「SELECT d。* FROM MyDomain d Where(:myDate)d.startDate AND d.endDate」,[myDate:myDate]) – 2013-03-25 09:57:27

+0

是啊,@Omar,你是對的 – sanghavi7 2013-03-25 14:46:09