2014-07-11 49 views
0

我做了一個新的Grails項目只有:的Grails哪裏查詢:擴大的DetachedCriteria的方法不起作用

TestDomain.class:

class TestDomain { 

    String var1 
    String var2 

} 

BootStrap.groovy中:

def init = { servletContext -> 
    if (TestDomain.count() == 0) { 
     new TestDomain(var1: "a", var2: "b").save() 
     new TestDomain(var1: "a", var2: "c").save() 
    } 
} 

TestController.groovy:

def index() { 
    def detachedCriteria = TestDomain.where { var1 == "a" } 
    detachedCriteria = detachedCriteria.where { var2 == "b" } 
    render detachedCriteria.list() 
} 


def indexWithMethod() { 
    def detachedCriteria = TestDomain.where { var1 == "a" } 
    detachedCriteria = addClause(detachedCriteria) 
    render detachedCriteria.list() 
} 

def addClause(detachedCriteria) { 
    detachedCriteria = detachedCriteria.where { var2 == "b" } 
    return detachedCriteria 
} 

調用索引僅返回1個實例(如預期的那樣),但indexWithMethod返回兩個實例元素。爲什麼indexWithMethod不等於索引?

我正在使用Grails 2.4.2,但這也發生在2.3.6。

+0

如果以靜態的參數類型,以你的'addClause'方法是'grails.gorm.DetachedCriteria'做這項工作中的錯誤? –

+0

這與您的問題無關,但您不應在控制器中定義像def addClause(detachedCriteria)這樣的方法,因爲編譯器會將其視爲控制器操作,而不是。你應該用'protected addClause(detachedCriteria)'來定義它。只有公共方法轉換爲操作。 –

+0

不,靜態鍵入返回類型不會有幫助,如果我靜態鍵入參數,它也不會有幫助。 –

回答