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。
如果以靜態的參數類型,以你的'addClause'方法是'grails.gorm.DetachedCriteria'做這項工作中的錯誤? –
這與您的問題無關,但您不應在控制器中定義像def addClause(detachedCriteria)這樣的方法,因爲編譯器會將其視爲控制器操作,而不是。你應該用'protected addClause(detachedCriteria)'來定義它。只有公共方法轉換爲操作。 –
不,靜態鍵入返回類型不會有幫助,如果我靜態鍵入參數,它也不會有幫助。 –