2012-03-19 52 views
0

我有一個域類調用應用程序如下訪問屬性:如何從Grails的查詢

class Application { 
    static hasOne = [resumption:Resumption, employee:Employee] 
    //Employee employee 
    Date startDate 
    Date endDate 
    Integer amountOfDays 
    String leaveRecommended 
    String leaveNotRecommended 
    Date supervisorDate 

    String toString(){ 
     return "Application for ${employee.lastName}, ${employee.firstName}" 
    } 
} 

在ApplicationController中我試圖寫是要找到匹配特定的員工,所有的應用程序查詢ID。我這樣做如下:

def applicationlist(){ 

    if(!params.max){ 
     params.max = 10 
    } 

    def query 
    def criteria = Application.createCriteria() 
    def results 

    query = { eq("employee_id", Long.parseLong("1")) } 

    results = criteria.list(params, query) 
    render(view:"employeeapplicationlist", model:[applicationlist:results]) 
} 

現在,我不斷收到錯誤:「無法解析屬性:EMPLOYEE_ID」 我已經檢查在MySQL中生成的應用程序表中,有一個名爲僱員標識與值列。奇怪的是我可以訪問任何其他屬性(如amountOfDays),那麼與employee_id有什麼關係?爲什麼它抱怨它無法解決財產?我錯過了什麼?提前致謝。

+0

哦,看起來我還沒有完全適應對象級別上的數據庫接口。對於有此類問題或類似問題的其他人,以下是修復程序: query = {eq(「employee.id」,Long.parseLong(「1」))} 正弦應用程序域類有一個Employee,那麼我們只需要訪問該員工的ID字段。請記住我們在ApplicationController中。原來我不能這麼快回答我的問題。如果我幾個小時後忘記回來做一個適當的帖子,我會將其作爲評論發佈。希望它能幫助別人。 – Mark 2012-03-19 05:20:45

回答

1

協會在標準DSL是形式

Application.withCriteria{ 
    employee{ 
     eq 'id', 1 
    } 
} 

http://grails.org/doc/latest/guide/GORM.html#criteria

,但你很可能只是做:

def employee = Employee.proxy(1) 
Application.findAllByEmployee(employee) 

這似乎Grails的用戶指南在幾次'查詢協會'

+0

你的意思是'load()'而不是'proxy'? – Antoine 2012-03-19 08:51:45

+0

相當確定要麼工作。 – 2012-03-19 23:26:21

0

哦,它看起來似乎喜歡e我還沒有完全適應對象級別的數據庫接口。對於別人用這種或類似的問題,這裏的修復:

query = { eq("employee.id", Long.parseLong("1")) } 

正弦應用程序域類有一個員工,那麼我們只需要訪問該員工的ID字段。請記住我們在ApplicationController中。