2012-03-19 4 views
0

Grails의 쿼리에서 속성에 액세스하는 방법 :와 ApplicationController에서 다음과 같이 내가 도메인 클래스라는 응용 프로그램이

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}" 
    } 
} 

내가 특정 직원과 일치하는 모든 응용 프로그램을 찾을 것입니다 쿼리를 작성하려고 해요 신분증. "속성을 확인할 수 없습니다 : EMPLOYEE_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]) 
} 

는 지금은 오류가 계속 다음과 같이 내가 그렇게 내가 MySQL의에서 생성 된 응용 프로그램 테이블을 확인했지만, 값이 employee_id입니다라는 컬럼이있다. 이상한 일은 내가 amountOfDays와 같은 다른 속성에 액세스 할 수 있다는 것인데, employee_id와 어떤 관계가 있습니까? 재산을 해결할 수 없다고 불평하는 이유는 무엇입니까? 내가 뭘 놓치고 있니? 미리 감사드립니다. 기준의 DSL에

+0

글쎄, 아직 완전히 Object 수준의 데이터베이스와 인터페이스하도록 조정되지 않은 것 같습니다. 이 문제가 있거나 비슷한 문제가있는 다른 사람은 다음을 수정하십시오. query = {eq ("employee.id", Long.parseLong ("1"))} 사인 애플리케이션 도메인 클래스에는 Employee가 하나 있고, 해당 직원의 id 필드에 액세스하면됩니다. 우리가 ApplicationController에 있다는 것을 기억하십시오. 내가 내 질문에 너무 빨리 대답 할 수 없다는 것을 알게된다. 나는 적절한 포스트를 만들기 위해 몇 시간 뒤 돌아 오는 것을 잊어 버렸을 때 이것을 코멘트로 올릴 것입니다. 누군가가 도움이되기를 바랍니다. – Mark

답변

1

협회는 양식

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

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

의 수 있습니다하지만 당신은 아마 할 수있는 :이 Grails의 사용 설명서 등의 몇 번 나타납니다

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

'쿼리에 문의하기'

+0

'proxy' 대신'load()'를 사용 했습니까? – Antoine

+0

어느 쪽이 효과가 있는지 확실히 알 수 있습니다. –

0

오, 잘 보입니다. e 나는 여전히 Object 수준에서 데이터베이스와 인터페이스 할 수 있도록 완전히 조정되지 않았습니다. 이것과 다른 사람 또는 비슷한 문제를 들어, 다음은 수정입니다 :

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

사인 응용 프로그램 도메인 클래스는 하나 명의 직원을 가지고 우리는 단지 그 직원의 ID 필드에 액세스해야합니다. 우리가 ApplicationController에 있다는 것을 기억하십시오.

관련 문제