2017-05-14 7 views
0

나는 두 개의 도메인 클래스 인 User와 Book을 가지고있다.grails grom many-to-many 매핑을 사용하는 조건 생성

class Book implements Serializable{ 


    String bookName 
    Timestamp createdDateTime 

    Blob file 


    static belongsTo = [User] 
    static hasMany = [user :User] 
} 

addToUser() 방법을 사용하여 책에 사용자를 추가 할 수 있습니다.

하지만 필터를 적용하는 동안 기준을 만들지 못했습니다.

def query = Book.createCriteria(); 

def results = query.list() { 
    eq("user",userObject) // not working since user field is a list of users. 
    order("createdDateTime", "desc") 
} 

정확한 필터링 방법을 알려주십시오.

답변

1

:

class User { 
    String name 
    static hasMany = [books: Book] 
} 

그럼 당신은 같은 기준과 함께 책을 볼 수있다. 조건은 다음과 같아야합니다.

Book.withCriteria { 
    user { 
     eq("id", userObject.id) 
    } 
    order("createdDateTime", "desc") 
} 
1

도메인을 모델링하는 방법을 확실하게 알지 못했지만 도서에 단일 사용자가 있기를 원하십니까? 어떤 경우에는 books에 belongsTo 관계가 있습니다.

class Book { 
    String bookName 
    Timestamp createdDateTime 
    Blob file 
    static belongsTo = [user: User] 
} 

다음 사용자에게 hasMany 관계가 있습니다. 당신은 다 대다 관계에서 먼저 사용자 테이블에 가입해야

def user = User.findByName('bob') 

def results = Book.createCriteria().list() { 
    eq("user", user) 
    order("createdDateTime", "desc") 
} 
+0

사용자 필드는 사용자 개체 목록이므로 작동하지 않습니다. –

+0

내 대답은 책이 단일 사용자를 갖기 때문에 개조 되었기 때문에 목록이 아니지만 사용자는 많은 책을 가질 수 있습니다. –