2013-09-10 5 views
0

grails 프로젝트에는 두 개의 도메인 클래스가 있습니다. 첫 번째는 사용자이고 두 번째는 연락처입니다. 사용자는 컨택 클래스와 일대일로 많은 관계가있다. 즉, 한 명의 사용자는 다수의 컨택을 갖는다. 사용자 클래스가이grails에서 두 개의 테이블 쿼리하기

package contacts 

class User { 
    String name 
    String email 
    String password 

    static constraints = { 
     name(nullable: false) 
     email(nullable: false,email: true,blank: false) 
     password(nullable: false,size: 6..8,blank: false,password:true) 
    } 
    static hasMany = [contacts: Contact] 

    String toString(){ 
     return name 
    } 
} 

처럼 내가이를 컴파일 할 때 접촉 클래스는이

package contacts 

class Contact { 
    String firstName 
    String lastName 
    String email 
    String phone 
    String address 
    Date dateCreated 

    static constraints = { 

     firstName(nullable: false) 
     lastName(nullable: true) 
     email(nullable: false) 
     phone(nullable: true) 
     address(nullable: true) 
     dateCreated() 
    } 
     static belongsTo = [user: User] 

} 

처럼, 그것은 사용자와 접촉라는 두 개의 테이블을 생성, 접촉 테이블에서 외래 키로 USER_ID있다 사용자 테이블에있는 id라는 사용자 테이블. 이제 특정 사용자의 모든 연락처를 검색하려고합니다. 나는 이것을하는 방법을 궁금해. 나는 동적 쿼리의 다른 접근 방법을 시도했지만 실패했다. 아무도 나를 해결할 수 있습니까?

+1

무엇 당신의 다른 "접근"입니까? – dmahapatro

+0

귀하의 질문에 대한 답변은 [this post] (http://stackoverflow.com/a/18637961/1806218)에 있습니다. – wannaKnowItAll

답변

3

는 사용자 개체를 가지고로, 다음은 간단만큼 : 사용자 ID가 그들을 검색하는 일부 서비스에 전달되는

def contacts = user.contacts 

경우 수행 할 수 있습니다

def getUserContacts(Long userId) { 
    def user = User.load(userId) 
    def contacts = Contact.findAllByUser(user) 
}